当前位置: 首页 > 编程日记 > 正文

计算机病毒实践汇总五:搭建虚拟网络环境

在尝试学习分析的过程中,判断结论不一定准确,只是一些我自己的思考和探索。敬请批评指正!

涉及内容:
INetSim安装及使用
ApateDNS安装及使用

1. 搭建病毒分析网络环境原因

使用虚拟机作为沙箱能把病毒与外界完全隔离开,但是很多病毒需要连接网络才能触发特定的行为,所以我们需要搭建一个尽量真实的网络环境。
  • 在断网模式下,病毒很可能保持静默或者做一些无关紧要的事来迷惑我们。
  • 在不了解病毒之前直接把病毒接入互联网是非常危险的,原因有如下几点:
    • 会将自己的主机以及网内的设备都会暴露在感染中
    • 该虚拟机可能变成黑客所操控的僵尸机来执行DDOS攻击
    • 可能让黑客知悉我们在解剖他的病毒。
  • 因此我们需要在虚拟机之间搭建一个虚假的网络环境来欺骗病毒。

2. 网络环境的配置

(1)配置目标

  • 运行恶意代码进行分析的虚拟机:WinXP
  • 启动服务器的虚拟机:Kali
  • 配置需求:虚拟机互相连接,但不与主机和外部网络连接。

(2)虚拟机的设置

  • 首先编辑网络编辑器,新增一个HOST ONLY的网络:

    744787-20160521190859482-644774138.png

  • 将虚拟机的网络适配器都选用这个网络:(WinXP反应很慢,建议重启更新配置)

    744787-20160521191024763-242657779.png

(3)配置虚拟服务器

  • 安装INetSim
    • kali:自带有INetSim,无需安装。环境变量中已经加入其路径,直接输入INetSim(root权限)就可运行:

      744787-20160521193656091-954628154.png

    • Ubuntu中第一次安装时无法运行,会出现缺少依赖的问题,可以通过重新配置数据源并更新依赖来解决:(教程ubuntu 14.04安装INetSim模拟Internet)

        - 配置数据源>wget -q -O - http://www.inetsim.org/inetsim.org-archive-signing-key.asc | sudo apt-key add ->sudo sh -c 'echo "deb http://www.inetsim.org/debian/ binary/" >> /etc/apt/sources.list.d/getdeb.list'- 添加组>groupadd inetsim- 更新数据源,安装依赖>sudo apt-get update>sudo apt-get install perl perl-base perl-modules libnet-server-perl libnet-dns-perl  libdigest-sha-perl  libipc-shareable-perl libio-socket-ssl-perl libiptables-ipv4-ipqueue-perl- 安装inetsim>sudo apt-get install inetsim
    • 中间出现的apt-get问题可尝试使用sudo aptitude update && install提供的不同版本兼容性解决方法(但是后来还是安不成功libiptables-ipv4-ipqueue-perl包)。但是不管怎样,至少在Ubuntu里能安装上INetSim而且可以运行起来了。

  • 配置INetSim
    编辑INetSim的配置文件(kali中工具的配置文件在/usr/share目录下, Ubuntu下载后安装的文件在/usr/bin目录下,不同版本可能会有所不同)

    744787-20160521192522232-780233213.png

  • 找到inetsim.conf文件(kali在conf/中),更改下面的配置(去掉注释):

第一处更改:绑定本机IP

service_bind_address 192.168.134.129(INetSim安装的虚拟机机IP)

744787-20160521193109091-853617934.png

第二处更改:DNS解析IP,将流量重定向到本机。

dns_default_ip  192.168.134.129(INetSim安装的虚拟机机IP)

744787-20160521193113951-272441736.png

第三处更改:重定向开启

redirect_enable yes

744787-20160521193118873-1989376914.png

第四处更改:连接绑定ip的tcp端口

redirect_exclude_port tcp:22

744787-20160521193120232-452755808.png

第五处更改:重定向外部地址(非注释信息,有些机器更改配置时自动更改,最好确认一下)

redirect_external_address 192.168.134.129(INetSim安装的虚拟机机IP)

744787-20160521193123263-2093458930.png

(4)主机中配置网络方法一:直接更改

  • 直接在网络属性中更改

    744787-20160521200244201-1699621576.png

(5)主机中配置网络方法二:使用ApateDNS

在ApteDNS里设置解析后的IP为我们Ubuntu服务器的IP然后运行它。这样病毒都会去连接我们的假服务器。

下载运行ApateDNS

  • 下载ApateDNS
  • 阅读ReadMe文件:
    • apatedns是一种控制DNS响应的GUI工具。它将响应DNS请求设置为任何你指定的IP地址。
    • 可以指定一些不存在的域(NXDOMAIN)响应返回之前有效的响应发送。
    • 默认情况下,它将可以使用DNS或默认网关设置为一个IP地址用于DNS响应。在退出后,还原本地DNS设置。
  • 运行环境要求:

      Windows XP or greaterMicrosoft .NET Runtime >= 2.0
    • 实际上直接在XP环境运行是有问题的,win7可以运行。
    • 使用Net framework4.0版本无法运行,2.0、3.5可以运行。
  • XP中出现问题一:

    744787-20160521201048966-2145422170.png

  • 解决方法:安装Net framework2.0或3.0或3.5。(注意:在安装了之后需要重启)

  • 出现问题二:提示“Please set registry key HKLM\Microsoft.NET Framework\InstallRoot to point to the .NET Framework install location”

  • 原因:可能是NET Framework没有安装或是虽然安装成功但是没有在注册表中设置成功。

  • 解决方案一:如果是安装中出现提示,可以删除所有相关文件重新安装。
  • 解决方案二:如果是安装成功后提示错误,修改注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework
  • 如果其中有InstallRoot这一键值,则将其值修改为.NET Framework的安装路径(一般为 C:\WINDOWS\Microsoft.NET\Framework\ )。如果没有则右击.NET Framework选择新建“字符串值”,设置数值名称为 InstallRoot,数值数据为 C:\WINDOWS\Microsoft.NET\Framework\ 或其他安装路径。

    744787-20160521201053013-1024922580.png

  • 应该可以正常打开了。

配置ApateDNS使对任何网站访问都指向固定的网站

  • Ping一下指向的网站(以校网为例)

    744787-20160521202639279-254174810.png

  • 将ApateDNS的DNS Reply IP设为123.127.3.2,开启服务。
  • 再次打开网页,所有的都显示校网的页面。

    744787-20160521202712044-1343266067.png

  • 在ApateDNS中可以看到,第一条是访问百度的DNS解析,后面几条是加载校网页面上的相关连接地址解析

    744787-20160521202725044-1866967373.png

  • 出现问题一:第一次ping校网的时候显示了一个111.13.100.2的地址,使用这个地址作为返回的DNS:

    744787-20160521202738013-1531465122.png

  • 访问百度,出现了校网的图标,但是无法显示出信息:

    744787-20160521202747201-1398364477.png

  • 出现问题二:刚开始的时候使用的百度的ip,但是无法实现这个功能,显示网页无法显示,然后我又尝试了使用ping到的hao123、扇贝网的ip,这两个页面倒是没说无法显示,但是也没有出来相应的网页,而且两者显示的不同。
  • 下图是设置为hao123的效果:

    744787-20160521202752107-1466500680.png

  • 下图为设置成扇贝网ip的效果:

    744787-20160521202807779-1959982099.png

  • 由于担心是浏览器的问题,我又尝试了IE、UC浏览器,但没有解决这个问题,还是一样的效果。
  • 经过老师的点拨,说是因为有些网站使用ip无法访问,我就回来试了一下,确实是这样的:

    744787-20160521202813466-129645104.png

  • 百度了一下,这个Nginx是一个高性能的HTTP和反向代理服务器,就跟Apache差不多,对于有些ip无法访问的问题,我通过阅读资料觉得有两种解释的可能:
    • 可能性一:基于Nginx平台的服务器为了防止恶意DDOS攻击(通过IP访问)或避免别人把未备案的域名解析到自己的服务器IP而导致服务器被断网,会设置IP访问限制,一般会设置成直接禁止使用ip访问或限制ip段重复访问,还可以绑定多个ip段显示不同内容。
    • 可能性二:如果服务器是把域名指向了IP,其中本身含有加载Web服务的功能,输入的ip就能够被直接重定位到对应的 Web 服务器。否则,在共享主机的服务器网络中,输入IP只能访问服务器上的一个站,无法确认去哪个目录访问对应网站的服务器主机。

3. 运行病毒程序

  • 现在配置的环境:
    • 两台虚拟机在同一个仅主机虚拟网络中。
    • kali中开启INetSim服务。
    • WinXP中运行ApateDNS或更改网络配置使重定向到INetSim虚拟服务器。
  • 在配置好的环境中运行恶意代码:

    744787-20160521213435060-1821504439.png

4. 小结

  • 这次实践花了大量的时间去解决软件问题,没有针对病毒进行分析。在这个过程中,通过不断地修改虚拟机的配置和对Linux系统的软件、关系依赖修改,锻炼操作能力。
  • 感觉看过的每一个教程都写得非常简单,实际上操作中会有各种问题,由于系统环境的不同问题也不同,虽然办法总比问题多,但是整个过程极为艰辛,尤其是电脑总是崩。而且一定选择适合的方法,比如这次经验教训就是对网上的解决方法要慎重使用:
    • 在尝试各种安装deb包的过程中,搜到一个解决办法是先sudo apt-get –f install修复依赖关系,结果我在kali里面运行之后,各种依赖都被解除了,重启机器了之后连开机启动图形化界面都找不到了….而且一开始忘记存快照,做Linux实践的文档还在里面找不到了…恢复了很早以前存的快照,所有的东西还要重新安装和更新,整个人极度崩溃。
    • 在做成功之后,解决别的同学出现的问题时深切地体会到:实践做得早虽然可以花更多的时间解决问题,但显然机器好更重要…有的虚拟机只要每一步都配置正确,几乎不用花什么功夫就出来了。
  • 在不知道问题所在的时候,就耐心的阅读说明吧,尽管我的英语不好,但是通过INetSim配置文件主要内容阅读,真的发现了问题所在并成功解决。

参考资料

  • 参考资料1:病毒木马查杀实战第001篇:基本查杀理论与实验环境配置
  • 参考资料2:浅谈病毒分析中的虚拟网络环境配置
  • 参考资料3:ubuntu 14.04安装INetSim模拟Internet
  • 参考资料4:Installing and Configuring InetSim
  • 参考资料5:下载ApateDNS

转载于:https://www.cnblogs.com/hyq20135317/p/5515675.html

相关文章:

form表单提交前进行ajax或js验证,校验不通过不提交

在使用form表单进行提交数据前,需要进行数据的校验->表单的校验(如:两次密码输入是否相同)后台数据的校验(如:账号是否存在),这个时候,如果哪步校验不通过&#xff0c…

中体骏彩C++面试题

下面是我凭记忆想到的几个题目,有需要的同学就拿去吧,我也算做了点善事. 中体骏彩C笔试题 2013-11-18 1.指针的含义是:B A.名字 B.地址 C.名称 D.符号 2.给出下面的程序输出: #include <iostream> #include <cstdlib> #include <cstring> #include <l…

Fibonacci数列的java实现

关于Fibonacci应该都比较熟悉&#xff0c;0,1,1,2,3.。。。。 基本公式为f(n) f(n-1) f(n-2); f(0) 0; f(1) 1; 方法1&#xff1a;可以运用迭代的方法实现&#xff1a; public static int f1(int n){if(n<1)return n;return f1(n-1) f1(n-2); }实现方法简单。 方法2&am…

stream流对象的理解及使用

我的理解&#xff1a;用stream流式处理数据&#xff0c;将数据用一个一个方法去 . &#xff08;点&#xff0c;即调用&#xff09; 得到新的数据结果&#xff0c;可以一步达成。 有多种方式生成 Stream Source&#xff1a; 从 Collection 和数组 Collection.stream()Collecti…

永成科技C++笔试题

最后几个题有点难度,在这里说一下: 永成科技C笔试题 2013-11-19 1.将1亿以内的质数存到一个超级大的数组中,用算法如何实现? 使用"筛法"求解1亿以内的质数的程序的思路: 先动态分配1亿个bit(总计12500000字节),用字节中的每一位代表每一个整数,首先将代表奇数的那…

事务库事务隔离级别

为了快速同步数据的需要&#xff0c;我分段执行了两次python脚本&#xff0c;即开启了两个进程同步数据&#xff0c;结果服务器不时报出数据库死锁异常&#xff0c;通过排查代码和数据库日志发现&#xff0c;是由长事务并发引起的。代码中有入账和出账两个方法&#xff0c;里面…

十大算法,描述+代码+演示+分析+改进(赶紧收藏!)

十大算法 1.冒泡排序 ​ &#xff08;1&#xff09;算法描述 ​ 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换&#xff0c;也就是…

webkit入门准备

《webkit入门准备》1. Ca) Webkit代码风格b) Inlinec) Constd) 构造与析构e) 重载f) 继承2. 泛式编程a) Vector/List/HashTableb) Iteratorc) 智能指针3. 面向对象编程a) 对象概念b) …

oracle操作

一、导入dmp文件&#xff1a; 1.创建表空间create tablespace 表空间 datafile 路径\文件名.dbf size 1500M autoextend on next 5M maxsize 3000M;注&#xff1a;路径必须为已创建2.创建用户create user 用户名 identified by 密码 default tablespace 表空间;3.更改用户的表空…

一个form表单,多个提交按钮(实现不同功能和地址的提交)

直接上代码 表单部分&#xff1a; <form action"" name"find" method"post" enctype"multipart/form-data"><input type"text" name"name"/><br/><button οnclick"f1()"/>找…

chrome 硬件渲染(GPU Accelerated Compositing in Chrome)

原文链接 http://www.chromium.org/developers/design-documents/gpu-accelerated-compositing-in-chrome chrome 中集成了webkit,这篇文章对webkit 硬件渲染过程有详细的介绍&#xff0c;很好。 简介 这篇文档讲解chrome硬件加速合成的实现细节和背景。 介绍 通常来讲&#…

CCS Font 知识整理总结

总是搞不懂 CCS 中如何正确的使用字体&#xff0c;这下明白了。 1、什么是 font-face font-face 顾名思义&#xff0c;就是文字的脸。字体是文字的外在形式&#xff0c;就是文字的风格&#xff0c;是文字的外衣。比如行书、楷书、草书&#xff0c;都是一种字体。同样一个字每个…

Maven安装与配置(最实用!!!)eclipse中配置maven

Maven安装与配置 一、需要准备的东西 JDKEclipse&#xff08;本章主要是在eclipse中进行配置maven&#xff09;Maven程序包 二、下载与安装 1. 前往maven下载最新版的Maven程序&#xff1a; 2. 将文件解压到D:\Program Files\Apache\maven目录下&#xff08;这样子放目录结…

在Ubuntu 12.04 64bit上配置,安装和运行go程序

注意:下面的安装配置均遵从官网或是教材《Go语言程序设计》中的部分内容. 顺便说下&#xff0c;这是一本很难得的Go语言的入门教程&#xff0c;非常基础和全面。起初我因为这本书的封面比较讨厌它&#xff0c;闲置几年之后&#xff0c;一次偶尔要用时静心翻阅之后&#xff0c;发…

Linux下三个密码生成工具

http://code.csdn.net/news/2820879 想出一个难破解且容易记的密码对不是一件简单的事情。在我为电脑设定一个新密码&#xff0c;或者在线注册了一个新的账号&#xff0c;需要输入密码的时候&#xff0c;脑袋就一片空白。不过&#xff0c;Linux下有几个密码生成工具可以使用&am…

javabean实体类与实体类之间的快速转换

一、Dozer是什么&#xff1f; dozer是一个能把实体和实体之间进行转换的工具.只要建立好映射关系.就像是ORM的数据库和实体映射一样. 使用方法示例如下: // article(PO) -> articleVOArticleVO articleVO dozerMapper.map(article, ArticleVO.class);这段示例代码。将从数…

ATS程序功能和使用方法详解

转载自https://blog.zymlinux.net/index.php/archives/374 Apache Traffic Server的程序文件&#xff0c;与传统的服务器系统有大不同&#xff0c;这里我们将会对这些文件进行详细的解读&#xff0c;并尽可能的对程序的功能和基本用法、参数等进一步说明&#xff0c;以利于新入…

java 读取txt,java读取大文件

java 读取txt,java读取大文件 package com.bbcmart.util; import java.io.File;import java.io.RandomAccessFile;import java.nio.MappedByteBuffer;import java.nio.channels.FileChannel; public class Test { public static void main(String[] args) throws Exception …

Spring Boot整合Spring Data JPA操作数据

一、 Sping Data JPA 简介 Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套 JPA 应用框架&#xff0c;底层使用了 Hibernate 的 JPA 技术实现&#xff0c;可使开发者用极简的代码即可实现对数据的访问和操作。它提供了包括增删改查等在内的常用功能&…

常用Linux命令总结

常用Linux命令总结 2013-12-08 压缩为gz格式 gzip error_2018082217.log 解压gz格式 gzip -d error_2018082217.log.gz 不解压来搜索gz格式的文件中的匹配行内容 gunzip -c 不真正解压.gz文件&#xff0c;而是检查该文件&#xff0c;不会生成多余的文件 gunzip -c error_20…

调试uIP出现死机问题

在调试uIP&#xff0c;加入http功能时&#xff0c;调试出现死循环 原因是所加入的http文件中含有printf等输出函数&#xff0c;遇到这种情况&#xff0c;有2种解决方法&#xff1a; 1.Keil中勾选“Use MicroLIB” 2. //加入以下代码&#xff0c;支持printf函数&#xff0c;而…

html+spring boot简单的ajax数据传输实现

本篇讲解在前后端不分离情况下的htmlspring boot的项目数据传输实现 首先&#xff0c;后台我写了三个接口 package com.demo.ajax.controller;import com.demo.ajax.Entity.Person; import lombok.extern.slf4j.Slf4j; import org.jboss.logging.Param; import org.springfram…

Tafficserver旁路接入方案综述

转载自 https://blog.zymlinux.net/index.php/archives/821 随着宽带技术的加速普及&#xff0c;目前&#xff0c;几款高性能开源CDN方案在广大开源爱好团队的充分的测试、企业服务应用验证中破壳而出。实际这个地球的互联网用户都在知情与不知情之间使用了ATS的环保服务。这方…

url中去掉index.php,方便redirect()

01 配置文件 return Array( URL_MODEL > 2,); 02 index.php入口文件下面加入文件 .htaccess -->使用editplus-->另存为 <IfModule mod_rewrite.c>RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ i…

js校验复选框(多选按钮)是否被选中的方法

js校验复选框是否被选中的方法 方法一&#xff1a;&#xff08;使用下标进行标记&#xff09; if ($("#checkbox-id")get(0).checked) {// do something }方法二&#xff1a;&#xff08;对被选中的进行操作&#xff09; if($(#checkbox-id).is(:checked)) {// do…

ATS插件开发基础

转载自 https://blog.zymlinux.net/index.php/archives/540 ATS插件开发需要提前了解ATS的插件的一些设计思想&#xff0c;以及系统提供的一些不同方向。我们将会介绍ATS的基础开发知识&#xff0c;以利于后续的插件开发课程讲解。 ATS的SDK文档&#xff0c;是了解ATS的核心设…

NET基础(3):is 和 as 操作符

在C#语言中进行类型转换的另外一种方式是使用is和as操作符。is检查对象是否兼容于指定类型&#xff0c;返回Boolean值true或false。注意&#xff0c;is操作符永远不抛出异常&#xff0c;例如以下代码&#xff1a; Object o new Object();Boolean b1 (o is Object); //返回…

制作大白菜PE盘

大白菜是一款功能非常强大的U盘启动盘制作工具&#xff0c;通过大白菜我们可以把U盘做成可以引导电脑启动的启动盘&#xff0c;同时可以用于装系统或维护系统&#xff0c;虽然制作方法非常简单&#xff0c;不过还是有很多人不懂如何制作大白菜U盘启动盘&#xff0c;这两天我刚好…

为方便ATS管理建立的一些命令别名

转载自https://blog.zymlinux.net/index.php/archives/129 玩ats经常需要切换目录什么感觉敲得麻烦了就建立了一些命令别名&#xff0c;就方便多了。 在用户目录下的.bashrc文件中加入以下内容&#xff1a; alias alogcd /usr/local/var/log/trafficserver;pwd alias atscd /us…

short s1 = 1; s1 = s1 + 1;有错而short s1 = 1; s1 += 1正确

这个问题以前碰到过&#xff0c;也研究过&#xff0c;发表一下&#xff1a; 如果你认为表达式&#xff08;x i&#xff09;只是表达式&#xff08;x x i&#xff09;的简写方式&#xff0c;这并不准确。这两个表达式都被称为赋值表达式。第二个表达式使用的是简单赋值操作…