20211901 2021-2022-2《网络攻防实践》第八次作业
1.实验内容
1.1恶意代码的分类
恶意代码的分类标准主要是代码的独立性和自我复制性,独立的恶意代码是指具备一个完整程序所应该具有的全部功能功能,能够独立传播、运行的恶意代码,这样的恶意代码不需要寄宿在另一个程序中。非独立恶意代码只是一段代码,必须嵌入某个完整的程序中,作为该程序的一个组成部分进行传播和运行。对于非独立恶意代码,自我复制过程就是将自身嵌入宿主程序的过程,这个过程也称为感染宿主程序的过程。对于独立恶意代码,自我复制过程就是将自身传播给其他系统的过程。不具有自我复制能力的恶意代码必须借助其他媒介进行传播。
病毒侧重于破坏系统和程序的能力
木马侧重于窃取敏感信息的能力
蠕虫侧重于网络中的自我复制能力和自我传染能力
1.2恶意代码发展趋势
- 恶意代码的复杂度和破坏力不断增强;
- 恶意代码技术的创新越来越平凡;
- 关注重点从计算机病毒转移到蠕虫和内核级的攻击工具。
1.3计算机病毒
计算机病毒是一种程序,它会将自身附着在主机上,目的是进一步繁殖和传播。从个人到大型组织,任何拥有适当技能的人都可以创建计算机病毒,并且可以感染计算机、智能手机、平板电脑,甚至智能汽车。
1.4网络蠕虫
-
基本特性:具有自我复制,感染性,通过网络自主传播不需要宿主,不需要用户交互,通过目标系统上的安全漏洞或错误配置进行传播。
-
组成结构:弹头(穿透目标)、传播引擎(驱动导弹飞向目标)、目标选择算法和扫描引擎(引导导弹发现和指向目标)、有效载荷(执行真正破坏性攻击的恶性材料)
-
弹头:获得计算机访问权的渗透攻击代码。常用技术:
缓冲区溢出攻击:
文件共享攻击
利用电子邮件传播
利用其他普遍的错误配置 -
传播引擎:获得控制权后,蠕虫必须传输自身复制样本到目标系统上。通常利用的网络传输机制包括:FTP、HTTP、TFTP、SMB及原始SOCKET套接字
-
目标选择算法和扫描引擎:目标选择算法寻找新的攻击目标,利用扫描引擎扫描每一个由目标选择算法确定的目标,确定其是否可以被攻击。选择多种不同目标选择算法:
电子邮件地址:从受害计算机的邮件通信录中得到电子邮件列表
主机列表:从本地主机上的各地计算机列表中获得地址
被信任的系统:获得信任当前受害机的计算列表
网络邻居主机:通过NetBIOS协议探测局域网中邻居主机
域名服务:连接至受害计算机的本地域名服务,用它查询其他受害者的网络地址
通过特定规则任意选择IP目标地址:从IP网络地段,通过某种预定的算法来选择IP地址,进而传播
- 有效载荷: 附加的攻击代码,为攻击者在目标系统上执行一些特殊目的的操作.如下:
植入后门
安装分布式拒绝服务攻击代理
组建僵尸网络
执行一个复杂的计算
1.5后门与木马
后门工具能为攻击者提供不同类型的访问渠道:本地特权提升和本地账号;单个命令的远程执行;远程命令行解释器访问;后门工具几乎都用了自启动功能。Windows平台中,自启动文件夹一般在C:\Documents and Setting[username]\Start Menu\Program\Startup目录下,一旦后门工具被添加至此文件夹,Windows启动时就会启动后门工具。可以通过msconfig和autoruns工具来检查出恶意后门工具注册的非法启动项。特洛伊木马:攻击者设计出无数的木马欺骗和伪装技术的方法,将恶意功能隐藏在木马程序中,并植入到目标计算机系统。
1.6僵尸程序和僵尸网络
僵尸网络的功能结构:1. 僵尸程序的功能主要分为两类:主体功能和辅助功能。主题功能包括命令与控制模块、传播模块;辅助功能包含信息窃取模块、主机控制模块、下载更新模块和防分析检测模块。2.僵尸网络的工作机制主要包含如下七步:渗透攻击、加入控制服务器、动态影射至IRC服务器、加入IRC信道、监听命令、接收命令、执行攻击。
僵尸网络的命令和控制机构:命令和控制机构主要分为三大类基于IRC协议的命令和控制机构、基于HTTP协议的命令和控制机构、基于P2P协议的命令与控制机构。
僵尸程序和僵尸网络的演化过程
1.7Rootkit
Rootkit定义
- 一类特洛伊木马后门工具,通过修改现有的操作系统软件,使攻击者获得访问权限并隐藏在计算机中。根据操作系统的分层,Rootkit可以运行在两个不同的层次上,即用户模式和内核模式。用户模式
- Rootkit修改的是操作系统用户态中用户和管理员所使用的一些内建程序和库文件,而内核模式Rootkit则直接攻击操作系统最核心的内核,修改内核从而隐藏自
黑客通过多种方式在目标计算机上安装 Rootkit:
最常见的是通过网络钓鱼或其他类型的社会工程攻击。受害者在不知不觉中下载并安装隐藏在计算机上运行的其他进程中的恶意软件,并让黑客控制操作系统的几乎所有方面。另一种方法是利用漏洞(即软件或未更新的操作系统中的弱点)并将 Rootkit 强制安装到计算机上。恶意软件还可以与其它文件捆绑在一起,例如受感染的 PDF、盗版媒体或从可疑的第三方商店获得的应用。Rootkit 在操作系统的内核附近或内核内运行,这使它们能够向计算机发起命令。任何使用操作系统的东西都是 Rootkit 的潜在目标 —— 随着物联网的扩展,它可能包括冰箱或恒温器等物品。
Rootkit 可以隐藏键盘记录器,在未经您同意的情况下捕获您的击键。这使得网络犯罪分子很容易窃取您的个人信息,例如信用卡或网上银行详细信息。Rootkit 可让黑客使用您的计算机发起 DDoS 攻击或发送垃圾邮件。它们甚至可以禁用或删除安全软件。一些 Rootkit 用于合法目的 —— 例如,提供远程 IT 支持或协助执法。大多数情况下,它们用于恶意目的。Rootkit 如此危险的原因是它们可以提供各种形式的恶意软件,它们可以操纵计算机的操作系统并为远程用户提供管理员访问权限。
1.8恶意代码分析方法
代码分析:是按需求使用一定的规则、方法和工具对计算机程序进行分析,以推导出其程序的结构、数据流程和程序行为的处理过程。程序分析技术在程序理解、程序测试、程序优化和程序重构等方面都有着重要的应用。
恶意代码分析技术主要问题
不能事先知道恶意代码的目的是什么
恶意代码具有恶意的攻击目的
恶意代码在绝大多数时候不会具有原代码
恶意代码会引入大量的对抗分析技术
恶意代码静态分析技术
反病毒扫描:通过匹配现有的已知的病毒进行判断病毒的种类、家族和变种信息。
文件格式识别:获得恶意软件执行的平台等信息
字符串提取:获取恶意代码实例名、帮助或命令行选项、用户会话、后门口令、相关URL、E-mail信息和包含库文件和函数调用。
二进制结构分析:获取程序的头部摘要信息、目标文件运行架构、重定位入口、符号表入口、不同的代码段、编译代码时使用的程序等。
反汇编与反编译:将二进制程序,转化成汇编代码和高级语言代码。
代码结构与逻辑分析:获取函数调用关系图和程序控制流图。
加壳识别与代码脱壳:对代码进行加密、多样性、多态和变形的机制。
恶意代码动态分析技术
基于快照对比的方法和工具
系统动态行为监控方法
网络协议栈监控方法
沙箱技术
动态调试技术
2.实验过程
2.1动手实践任务一
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
①从云班课中下载rada.rar文件,解压,然后将RaDa拖到Windows attck的桌面。然后打开终端,输入:cd 桌面,然后输入file RaDa.exe,查看该文件类型,这是一个有图形化界面(GUI)的 32位可执行程序
②使用winXPattacker的软件PEiD检查此文件加壳类型。加壳其实是利用特殊的算法,对可执行文件里的资源进行压缩,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。它们附加在原程序上通过加载器载入内存后,先于原始程序执行,得到控制权,执行过程中对原始程序进行解密、还原,还原完成后再把控制权交还给原始程序,执行原来的代码部分。加上外壳后,原始程序代码在磁盘文件中一般是以加密后的形式存在的,只在执行时在内存中还原,这样就可以比较有效地防止破解者对程序文件的非法修改,同时也可以防止程序被静态反编译。显示这是一个0.89.6版本的UPX壳
③在终端中输入strings RaDa.exe,发现了很多乱码,这是因为被加壳了
④使用winXPattacker的超级巡警虚拟机脱壳器对此文件进行脱壳,脱壳成功后生成了一个新文件RaDa_unpacked.exe
⑤接下来我们再在终端中输入strings RaDa_unpacked.exe,此时发现有正常的字符串
⑥打开软件IDA Pro Free,选择脱壳之后的文件。可以看到作者为DataRescue sa/nv,邮箱为ida@datarescue.com
2.2动手实践任务二:分析Crackme程序
任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。
①从云班课中下载crackme1.exe和crackme2.exe文件,把文件复制到WinXP Attacker虚拟机的桌面上。计算crackme1.exe和crackme2.exe的 md5 值以检查完整性。MD5算法是计算机广泛使用的一种哈希算法,将数据(如汉字)运算为另一固定长度值,用于确保信息传输完整一致。
②输入file命令查看文件类型,可知两个文件都是32位 windows 下 PE 文件,intel 80386
③运行这两个程序时发现缺少参数
④对 crackme1.exe 进行带有参数的测试,发现一个参数,两个参数,以及三个参数的情况如下,由此可以猜测应该时一个参数。
⑤利用IDA Pro 打开crackme1.exe 分析,打开Strings 查看程序中的字符串。通过 Strings 窗口可以查看到该程序中出现的明文字符串,可以看到前面的两种输出信息,“I think you are missing something.” “Pardon? What did you say?”。
⑥接下来我们来看函数调用图,可以看出和字符串输出相关的函数都被函数sub_401280调用。
⑦下面来看sub_401280,cmp [ebp+arg_0],2为判断程序是否有两个参数。在 C 语言中,主函数通常为int main(int argc,const char *argv),无论程序多复杂,代码中必须有这么一个函数,也只能有一个这样的函数,程序执行时就是从这个函数进入的。其中,argc是命令行总的参数个数,argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数。char *argv[]是一个字符数组,其大小是int argc,主要用于命令行参数argv[]参数,数组里每个元素代表一个参数。
⑧接下来我们还能看到如下的几个信息
⑨猜测正确的语句应该是I know the secret,在终端输入crackme1.exe “I know the secret”,得到结果“亲爱的逆向工程师,你知道怎样和项目说话了”
⑩按照上述分析crackme1.exe的思路,我们再去分析crackme2.exe,分析方法和上述类似,我们打开函数调用图,发现关键在于这个sub_401280
⑪我们来看sub_401280,内容和上面差不多,关键口令为I know the secret,但是程序名称变成了crackmelpease.exe,因此我们需要对程序进行一些修改,
⑫输入copy crackme2.exe crackmeplease.exe将程序改名为crackmeplease.exe,然后再输入crackmeplease.exe "I know the secret",得到信息“我们有一个小秘密:巧克力”。
2.3分析实践任务一
分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
2、找出并解释这个二进制文件的目的;
3、识别并说明这个二进制文件所具有的不同特性;
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
6、给出过去已有的具有相似功能的其他工具;
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
①输入指令md5sum RaDa.exe得到md5摘要值。输入指令file RaDa.exe识别出这是32位GUI文件.
②用process explorer对RaDa.exe进行检测,该程序用http连接到目标为10.10.10.10的主机下名为RaDa——commands的网页上。
③用IDA 工具打开RaDa_unpacked.exe,进入strings,在菜单栏中设置:的Edit-->Setup--> Unicode
④往下翻到底部,可以看到作者信息
⑤在strings中点击IP地址: http://10.10.10.10/RaDa,上面已经分析是用http连接到目标为10.10.10.10的主机下名为RaDa——commands.html,对应函数sub_404FB0,点击进入函数,可知这个字符串被拷贝到dword_40C030变量中.
下面依次回答提出的问题。
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
答:摘要为caaa6985a43225a0b3add54f44a0d4c7,这是一个PE可执行文件,同时也是一个UPX加壳文件。
2、找出并解释这个二进制文件的目的;
答:这个二进制文件通过网络获取指令并执行;攻击者可以利用其完全控制该系统,是一个后门程序。
3、识别并说明这个二进制文件所具有的不同特性;
答:该程序运行的时候会自动安装到C盘中,并修改注册表跟随系统开机启动:访问http://10.10.10.10/Rada/Rada_command.html,还可以解析指令并执行指令。
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
答:UPX 加壳技术。
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
答:不具有自主传播模块,不具有传播和感染的性质,所以它不属于病毒和蠕虫;也没有将自己伪装成有用的程序以欺骗用户运行,不是木马。是一个后门程序。
6、给出过去已有的具有相似功能的其他工具;
答:使用http方式来同攻击者建立连接————Bobax、海阳顶端、Setiri等
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
2004年,由Raul siles和David Perze二人编写
2.4分析实践任务二
Windows 2000系统被攻破并加入僵尸网络
任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:
1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
2、僵尸网络是什么?僵尸网络通常用于什么?
3、蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
4、在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
5、那些IP地址被用于攻击蜜罐主机?
6、攻击者尝试攻击了那些安全漏洞?
7.那些攻击成功了?是如何成功的?
1.IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
因特网中继聊天(Internet Relay Chat),简称 IRC。IRC 的工作原理非常简单,只需要在自己的 PC 上运行客户端软件,然后通过因特网以IRC 协议连接到一台 IRC 服务器上即可。IRC 特点是通过服务器中继与其他连接到这一服务器上的用户交流。
注册时需要发送的消息有三种,分别是口令,昵称和用户信息。
IRC 服务器明文传输通常在 6667 端口监听,也会使用 6660—6669 端口。SSL 加密传输在 6697 端口。
2.僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是指攻击者(称为botmaster)出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。
僵尸网络主要用于:发动DDOS攻击、发送垃圾邮件、 监听用户敏感信息、记录键盘输入信息、 扩散新的恶意软件 和 伪造点击量,骗取奖金或操控网上投票和游戏,同时黑客控制的这些计算机所保存的信息也都可被黑客随意“取用
3.蜜罐主机(IP地址:172.16.134.191)与哪些IRC服务器进行了通信?
在kali中用wireshark打开老师给的botnet_pcap_file.dat文件,设置条件为ip.src == 172.16.134.191 && tcp.dstport == 6667,可以找到所有与蜜罐主机通信的IRC服务器,对应deip地址为:209.126.161.29,66.33.65.58、63.241.174.144、217.199.175.10、209.196.44.172,与209.196.44.172 通信最为频繁
4、在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
首先输入指令sudo apt-get install tcpflow安装tcpflow,然后输入命令tcpflow -r /home/kali/Desktop/botnet_pcap_file.dat 'host 209.196.44.172 and port 6667',得到分流后的两个数据文件和一份报告
输入指令cat 209.196.044.172.06667-172.016.134.191.01152 | grep -a "^:irc5.aol.com 353" | sed "s/^:irc5.aol.com 353 rgdiuggac @ #xx*x 😕/g" | tr ' ' '\n' | tr -d "\15" | grep -v "^$" | sort -u | wc -l,作用是计算209.196.044.172.06667-172.016.134.191.01152文件中访问以209.196.44.172为服务器的主机数目,结果为3461
5、那些IP地址被用于攻击蜜罐主机?
我们认为进入蜜罐的流量都是攻击。使用以下命令查找端口并输出到1.txt 中:tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | grep -v 'reply' | cut -d '.' -f 10 | cut -d ':' -f 1 | sort | uniq | more >1.txt; wc -l 1.txt,结果显示共有148个端口被攻击了
输入指令tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > 2.txt;wc -l 2.txt,将连接IP地址输出到2.txt中。结果显示共有165个主机被用于蜜罐入侵
6、攻击者尝试攻击了那些安全漏洞?
①输入指令tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and tcp[tcpflags]== 0x12 | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq筛选出蜜罐主机相应的TCP端口
有135 139 25 445 4899 80端口
②然后我们逐个进行分析,在wireshark中输入 ip.dst == 172.16.134.191 and tcp.port==135进行筛选,这些是目标地址为172.16.134.191、目标端口为135的数据包。可以看到数据包很少,只是建立通信,没有数据传输。
③ ip.dst == 172.16.134.191 and tcp.port==139,数据包长度都很小,推断进行了SMB查点
④ ip.dst == 172.16.134.191 and tcp.port==25,推断进行了端口扫描
⑤ ip.dst == 172.16.134.191 and tcp.port==445,存在大量数据包,主机61.111.101.78向蜜罐发送了PSEXESVC.EXE,这是一种通过命令行环境和目标机器进行连接进而控制目标机器的程序,并且不需要通过RDP远程桌面协议进行图形化控制,所以很难被发现。
⑥ip.dst == 172.16.134.191 and tcp.port==4899,4899端口是Radmin的默认端口,具有远程控制功能,通常杀毒软件是无法查出。
⑦ip.dst == 172.16.134.191 and tcp.port==80,发现24.197.194.106发送的消息包好像已经进入了主机,使用了cmd.exe,可能正在输入什么命令获得蜜罐的机密消息。
7.那些攻击成功了?是如何成功的?
通过上面的分析可知,成功的攻击发起者是218.25.147.83(蠕虫攻击)和 61.111.101.78( LAN Manager 口令猜测)
3.学习中遇到的问题及解决
- 问题1:分析部分有的地方看不懂
- 问题1解决方案:上网找知识点解析
4.学习感悟、思考等
这次实验涉及的知识点很多,需要静心做,耐心做,认真分析还是有收获的
参考资料
- 《网络攻防技术与实践》