这个做业属于哪一个课程:https://edu.cnblogs.com/campus/besti/19attackdefensehtml
这个做业的要求在哪里:https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10695ios
我在这个课程的目标是:学习网络攻防相关知识,提高专业技能web
这个做业在哪一个具体方面帮助我实现目标:学习了解恶意代码基础知识和分析方法算法
Malware is a set of instructions that run on your computer and make your system do somethingthat an attacker wants it to do.编程
使计算机按照攻击者的意图运行以达到恶意目的的指令集合。指令集合:二进制执行文件,脚本语言代码,宏代码,寄生在文件、启动扇区的指令流windows
恶意代码目的:技术炫耀/恶做剧,远程控制,窃取私密信息,盗用资源,拒绝服务,破坏……安全
计算机病毒,蠕虫,恶意移动代码,后门,特洛伊木马,僵尸程序, Rootkit等...服务器
计算机病毒是最先出现的恶意代码,媒体/工业界的概念混淆,常常以计算机病毒(ComputerVirus)等价于恶意代码网络
[恶意代码类型.]恶意代码家族名称[.变种号]架构
反病毒工业界并无造成规范的定义,概念混淆
各类恶意代码形态趋于融合
传播、控制、隐藏、攻击
针对明肯定义特性对恶意代码进行分类研究
计算机病毒是一种可以自我复制的代码,经过将自身嵌入其余程序进行感染,而感染过程一般须要人工干预才能完成
感染性:最本质的特性
潜伏性
可触发性
破坏性
衍生性
前缀感染
后缀感染
插入感染
病毒:借助人类帮助从一台计算机传至另外一台计算机
蠕虫:主动跨越网络传播
移动存储:软盘→u盘
电子邮件及其下载:邮件病毒
文件共享: SMB共享服务、NFS、P2P
主动攻击网络服务漏洞
经过网络共享目录
经过邮件传播
渗透攻击模块
FTP/TFTP/HTTP/SMB/直接传送/单包
扫描策略
Payload:传播自身,开放后门, DDoS攻击……
后门是容许攻击者绕过系统常规安全控制机制的程序,按照攻击者本身的意图提供通道。
本地权限提高、本地账号
单个命令的远程执行
远程命令行解释器访问——NetCat
远程控制GUI-VNC, BO,冰河,灰鸽子
无故口后门:ICMP后门,基于Sniffer非混杂模式的后门,基于Sniffer混杂模式的后门
Windows:自启动文件/文件夹;注册表自启动项;计划任务
Linux/Unix:inittab, rc.d/init.d, 用户启动脚本,cron计划任务
定义:看起来具备某个有用或善意目的,但实际掩盖着一些隐藏恶意功能的程序。
错误观点:提供对受害计算机远程控制的任何程序,或受害计算机上的远程命令行解释器看作木马,他们应被视为后门。
若是将后门工具假装成良性程序,才具有真正的木马功能。
来自于robot,攻击者用于一对多控制目标主机的恶意代码
攻击者出于恶意目的,传播僵尸程序控制大量主机,并经过一对多的命令与控制信道所组成的网络。
定义特性:一对多的命令与控制通道的使用。
分布式拒绝服务攻击
发送垃圾邮件
窃取敏感信息
点击欺诈...
传统僵尸网络-基于IRC互联网实时聊天协议构建
著名案例:sdbot, agobot等
僵尸网络控制器-Web网站方式构建
僵尸程序中的命令与控制模块:经过HTTP协议向控制器注册并获取控制命令■著名案例: bobax, rustock,霸王弹窗
命令与控制模块的实现机制一P2P协议P2P僵尸程序同时承担客户端和服务器的双重角色.
著名案例: storm worm
一类隐藏性恶意代码形态,经过修改现有的操做系统软件,使攻击者得到访问权并隐藏在计算机中。
Rootkit也可被视为特洛伊木马
获取目标操做系统上的程序或内核代码,用恶意版本替换它们
Rootkit每每也和后门联系在一块儿
植入Rootkit目的是为攻击者提供一个隐蔽性的后门访问
定义特性:隐藏性
用户模式
内核模式
对提供的rada恶意代码样本(U盘或FTP/materials/course9下载),在WinXP_Attacker虚拟机中进行文件类型识别,脱壳与字符串提取,以得到rada恶意代码的编写做者。
使用文件格式和类型识别工具(file, PEid),给出rada恶意代码样本的文件格式、运行平台和加壳工具。
使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理。
使用字符串提取工具(strings、IDA Pro),对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写做者是谁?
本实验使用winXP虚拟机进行,首先把云班课老师给的chapter9压缩文件下载到本机,解压rada.rar(解压密码rada)后把文件夹复制进XP的C盘
在cmd中切换到恶意程序所在的目录cd C:\rada
,使用file命令查看file RaDa.exe
RaDa.exe的文件类型
看到RaDa.exe是一个32位的Windows PE可执行文件,GUI表示这个程序是一个有图形界面的程序,intel 80386表示处理器架构
用执行指令strings RaDa.exe
来查看该程序可打印字符串
执行指令后发现可打印的字符串为乱码,没法分析出有效信息,因此判断该程序采用了加壳防止反汇编的技术
使用PEiD工具查看RaDa.exe的基本信息
尝试了一下,PEiD_cn是汉化版界面,PEiD_en是英文版界面,想都不用想用中文的
点击最上方“文件”右边的小框框,C盘找到刚刚的RADa.exe文件打开
这里能够看到文件的入口点、偏移、文件类型、EP段、汇编程序以及加壳类型。UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
即为该程序使用的加壳工具
对RaDa.exe进行脱壳
选择文件
点击“给我脱”
发如今恶意程序同目录下生成了一个脱壳之后的程序
再次使用PEiD工具来查看脱壳后的程序
能够看到编写该程序所使用的语言和开发工具为VB6.0
再用strings查看脱壳后的RaDa_unpacked.exestrings RaDa_unpacked.exe
能够看到有不少程序的交互字符串和程序的函数调用的函数名
打开IDA Pro Free
选择“new”
菜单栏“file”-“open”打开RaDa_unpacked.exe
这里凭直觉瞎选择了第二个exe的(我看了眼孙启龙君的,他好像是直接默认第一项了,显示内容稍有区别,不过都能看到做者信息)
从中能够看到做者的信息DataRescue sa/nv
,还有做者的邮箱 <ida@datarescue.com>
(实验三中能够获取到更详细的做者姓名Raul siles和David Perze)
程序是由MSVB编写的,往下是一些函数调用、汇编代码
关闭
在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其可以输出成功信息。
本实验使用winXP虚拟机进行,首先把云班课老师给的chapter9压缩文件下载到本机,将crackme1.exe和crackme2.exe复制进XP的C盘
cmd切换到恶意程序所在目录cd C:\
,使用file命令查看crackme的文件类型file crackme1.exe
和file crackme2.exe
两个文件均为windows系统下运行的32位可执行程序,且没有图形界面,仅使用控制台操做(console),是命令行程序
首先,咱们先对crackme1.exe进行破解。一开始是尝试运行该程序,试探其输入格式
咱们能够发现,在接受1个参数时,程序的反馈不同凡响,因此咱们猜想该程序接受一个参数。
目前为止,咱们已经发现了程序的两种反馈信息。一种是“I think you are missing something.”,这个猜想是参数数目不对的提示;另外一种是“Pardon? What did you say?”,对于这种反馈信息,咱们猜想是参数错误的提示。
接着咱们使用IDA pro工具来打开文件,尝试阅读其汇编语言,验证咱们的猜测。
菜单栏“file”-“open”打开crackme1.exe
进去后,后侧有个Strings Window
窗口,放大
经过Strings页面能够查看到该程序中出现的明文字符串,咱们发现了前面的两种反馈信息,“I think you are missing something.” “Pardon? What did you say?”,还发现了“I know the secret”和“You know how to speak to programs, Mr. Reverse-Engineer”这两个字符串。有内容咱们能够猜想,前者就是咱们须要的口令,后者就是输入口令正确时程序的反馈信息。
此外,能够看到有“GCC”,说明该恶意程序是用C语言编写的
查看整个程序的call flow
刚打开有点小,点击100%
这个按钮放大
咱们能够得出结论,程序是用C语言写的,程序估计是使用strcmp函数来比较口令的,关键的部分在sub_401280
接下来咱们开始查看sub_401280
的汇编代码
cmp [ebo+arg_0],2
为判断程序是否有两个参数
在c语言中,main函数一般为int main(int argc,const char **argv),即第一个参数argc对应argv的大小,第二个参数对应命令行的格式。
如在命令行输入crackme1.exe 1
,那么参数对应的值为argc=2,argv={”crackme1.exe”,”1”}
若是argc=2,那么去往loc_4012D2
进行下一步判断
如输入"I know the secret",则继续前往loc_401310
测试验证猜测crackme1.exe "I know the secret"
(此处应用英文状态下的双引号)
crackme2.exe的操做同理
猜想该程序一样是接受一个参数
String界面,发现明文字符串“I know the secret”和“crackmeplease.exe”
直接朴素地输入"I know the secret"测试,与前者错误提示相同
查看整个程序的call flow
关键的部分仍是在sub_401280
这里,查看汇编代码
一样,cmp [ebp+arg_0],2
判断程序参数是否为两个
经过参数个数的判断后,接着去loc_4012D5
用strcmp函数对argc里面的第一个字符串,即程序名“crackme2.exe”和“crackmeplease.exe”进行判断
经过判断后,前往loc_401313
将用户输入的口令与”I know the secret”判断。
经过判断后,经由loc_401351
和loc_401358
前往loc_401381
、unk_403080
(双击跳跃过去)
经过口令判断后,经过必定规则输出经过测试的信息
具体是unk_403080
中的字符串分别与0x42h
进行异或运算
测试验证:
copy crackme2.exe crackmeplease.exe crackmeplease.exe "I know the secret"
如今你做为一名安全事件处理者的任务(若是你接受的话)就是深刻分析这个二进制文件,并得到尽量多的信息,包括它是如何工做的,它的目的以及具备的能力,最为重要的,请展现你获取全部信息所采起的恶意代码分析技术。
提供对这个二进制文件的摘要,包括能够帮助识别同同样本的基本信息
找出并解释这个二进制文件的目的
识别并说明这个二进制文件所具备的不一样特性
识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
给出过去已有的具备类似功能的其余工具
可能调查出这个二进制文件的开发做者吗?若是能够,在什么样的环境和什么样的限定条件下?
本实验使用winXP虚拟机进行,继续使用实验一中的rada
首先使用MD5对该恶意程序进行摘要信息分析
cd C:\rada md5sum RaDa.exe
获得md5摘要值为caaa6985a43225a0b3add54f44a0d4c7
实验一中已经执行了file RaDa.exe
分析该恶意程序的运行环境,结果为win32位程序,有图形界面
该恶意程序已经通过加壳,实验一中已经完成对其的获取文件类型、检测壳、脱壳与分析,再也不重复
打开监视工具process explorer
C盘中双击运行恶意程序RaDa_unpacked.exe,打开process explorer
在进程监控里点击该恶意程序,右键选择Properties
查看详细信息
该恶意程序使用http链接到目标为10.10.10.10的主机下的一个名为RaDa_commands.html的网页上,而后分别下载和上传某些文件,而且在受害主机C盘目录下建立一个文件夹“C:/RaDa/tmp”来保存其下载的文件
将文件RaDa.exe复制到了 C:\RaDa\bin 目录下,能够看出该恶意代码将其自我复制到主机系统盘,并激活了自启动,还试图从一个HTML页面获取并解析命令,故猜想这应该是一个后门程序
还能够发现该恶意程序中可执行DDos拒绝服务攻击
再往下看能够发现该恶意程序对主机的注册表进行了读写和删除操做
win+R,输入regedit
打开注册表查看,未发现有关于RaDa的信息,多是该恶意程序已经删除了注册表信息
再往下看能够看到一些指令,exe在宿主主机中执行指定的命令,get下载,put上传,screenshot截屏,sleep休眠
还能够看到更准确详细的做者姓名Raul siles和David Perze
打开和扫描工具wireshark
C盘中双击运行RaDa_unpacked.exe,设定搜索条件ip.addr==10.10.10.10
,能够看到受害主机向目标主机 10.10.10.10 发送了大量的数据包
MD5摘要信息:caaa6985a43225a0b3add54f44a0d4c7
是一个32位Windows PE可执行文件,使用了UPX加壳工具进行了加壳处理
链接互联网时,该恶意程序就会经过http请求链接到指定主机,进行接受攻击者指令操做,而且攻击者能够彻底控制该系统,因此这应该是一个后门程序。
1.RaDa.exe被执行时,它会将自身安装到系统C盘中。程序运行后,在实验主机的C盘下建立了一个RaDa目录,里面一个bin文件夹,一个tmp文件夹,tmp前面分析过是用来临时存储从目标主机下载到受害主机的文件和从受害主机获取的文件信息,打开bin文件夹发现里面安装了一个RaDa.exe可执行文件
2.经过修改注册表的方式使得系统启动,启动后每隔一段时间会尝试与10.10.10.10创建tcp链接,循环执行以下操做:
从指定的web服务器请求指定的web页面 → 解析得到的web页面,获取其中的指令 → 执行解析出来的指令
3.文件双双击运行后没有弹出任何窗口与提示信息,只有经过查看进程才能发现,隐蔽性较好。
使用了UPX加壳工具进行了加壳处理
猜想是后门程序,该程序执行须要经过攻击者远程发送指令,并且不具备自主传播模块,故不属于病毒和蠕虫,也并未进行假装,故不是木马。
Bobax——2004等也是使用HTTP协议从指定的服务器下载命令文件,而后解析并执行其中的指令。
该恶意程序是Raul siles和David Perze在2004年编写的。
分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并经过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其余特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:
IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪一个消息?IRC通常使用哪些TCP端口?
僵尸网络是什么?僵尸网络一般用于干什么?
蜜罐主机(IP:172.16.134.191)与哪些IRC服务器进行了通讯?
在这段观察期间,多少不一样的主机访问了以209.196.44.172为服务器的僵尸网络。
哪些IP地址被用于攻击蜜罐主机?
攻击者尝试了哪些安全漏洞?
哪些攻击成功了?是如何成功的?
因特网中继聊天(Internet Relay Chat),简称IRC。IRC的工做原理很是简单,您只要在本身的PC上运行客户端软件,而后经过因特网以IRC协议链接到一台IRC服务器上便可。IRC特色是经过服务器中继与其余链接到这一服务器上的用户交流。经过IRC简介了解IRC的相关内容。
注册时须要发送的消息有三种,分别是口令,昵称和用户信息。格式以下:USER
、PASS 、NICK 。注册完成后,客户端就使用JOIN信息来加入频道,格式以下:JOIN 。 IRC服务器明文传输一般在6667端口监听,也会使用6660—6669端口。SSL加密传输在6697端口。
攻击者滥用IRC构建僵尸网络时,可能使用任意的端口构建IRC僵尸网络控制信道,那么基于端口识别服务再也不可靠,要进行基于应用协议特征进行识别(如USER/NICK)。
僵尸网络(英文名称叫BotNet),是攻击者出于恶意目的,传播僵尸程序控制大量主机,并经过一对多的命令与控制信道所组成的网络;是互联网上受到黑客集中控制的一群计算机。每每被黑客用来发起大规模的网络攻击,如分布式拒绝服务攻击(DDoS)、海量垃圾邮件等,同时黑客控制的这些计算机所保存的信息也均可被黑客随意“取用”。所以,不管是对网络安全运行仍是用户数据安全的保护来讲,僵尸网络都是极具威胁的隐患。僵尸网络的威胁也所以成为目前一个国际上十分关注的问题。然而,发现一个僵尸网络是很是困难的,由于黑客一般远程、隐蔽地控制分散在网络上的“僵尸主机”,这些主机的用户每每并不知情。所以,僵尸网络是目前互联网上黑客最青睐的做案工具。
本实验使用虚拟机为kali,下载云班课的botnet_pcap_file.dat文件,复制进虚拟机
右键使用Wireshark打开数据文件
(原则上这样应该能够,但我没能成功启动wireshark,因此最后仍是在wireshark里面open打开的)
由第一问可知,IRC服务器明文传输一般在6667端口监听,因此设置过滤条件ip.src == 172.16.134.191 && tcp.dstport == 6667
咱们能够找到五个IRC服务器,分别为:
209.126.161.29
66.33.65.58
63.241.174.144
217.199.175.10
209.196.44.172
将文件更名为将文件名改为了botnet.pcap
。
终端使用命令,用tcpflow进行分流
apt-get install tcpflow #出现tcpflow: command not found时安装更新 tcpflow -r botnet.pcap "host 209.196.44.172 and port 6667" #读取文件,筛选host和端口6667后进行分流
接着执行如下两条命令,避免出现字符编码问题。
export LC_COLLATE='C' export LC_CTYPE='C'
而后利用以下指令进行搜索有多少主机链接(grep搜索获取昵称输出行sed去除前缀,g表示全局,tr将空格转换为换行,tr -d删除\r,grep -v就是NOT指令,去除空行,sort -u排序并去除重复,wc -l输出行数)
cat 209.196.044.172.06667-172.016.134.191.01152 | grep -a "^:irc5.aol.com 353" | sed "s/^:irc5.aol.com 353 rgdiuggac @ #x[^x]*x ://g" | tr ' ' '\n' | tr -d "\15" | grep -v "^$" | sort -u | wc -l
3457个
使用下面的指令找出全部的可能链接的主机的IP地址:
cut -d是指定字段的分隔符,uniq命令用于检查及删除文本文件中重复出现的行列,通常与sort命令结合使用.使用下面的指令查找端口并输出到2.txt中.
tcpdump -n -nn -r botnet.pcap 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > 2.txt;wc -l 2.txt
查找到165个被攻击的端口
使用snort -r botnet.pcap -c /etc/snort/snort.conf -K ascii
指令先查一下网络流分布状况
发现大部分都是TCP包,有一部分UDP包,因此咱们首先应该筛选出响应的TCP端口和UDP端口。
而后筛选出蜜罐主机相应的TCP端口,指令比上面多了一个筛选条件:响应0x12
tcpdump -r botnet.pcap -nn 'src host 172.16.134.191 and tcp[tcpflags]== 0x12' | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq
能够看到TCP响应端口为135(rpc),139(netbios-ssn),25(smtp),445(smb),4899(radmin),80(http)
一样的,将指令协议部分改为UDP就能够查询UDP端口响应
tcpdump -r botnet.pcap -nn 'src host 172.16.134.191 and udp ' | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq
查到仅有137(netbios-ns)号端口响应
wireshark打开pcap文件,首先查看TCP的135和25端口,设定筛选条件tcp.port==135 || tcp.port==25
发现这俩端口只是用来进行链接,没有发生数据的交互
接下来分析445端口,445端口是SMB端口,设置过滤条件ip.dst==172.16.134.191 and tcp.dstport==445
在61.111.101.78发起的请求中发现了PSEXESVC.EXE,这是一种Dv1dr32蠕虫,这种蠕虫正是经过IRC进行通讯。
为判断是否成功,查找从蜜罐发往61.111.101.78的信息ip.dst==61.111.101.78
发现每一个IP地址连入的链接都有响应的回应,而且返回信息中含有\PIPE\ntsvcs,这是一个远程调用,因此攻击者确定是得到了权限,攻击是成功的
而后看80端口,设置筛选条件ip.dst==172.16.134.191 and tcp.dstport==80 and http
看到210.22.204.101向蜜罐发送了不少的C,可能在进行缓冲区溢出攻击
此外,24.197.194.106发起了不少次链接,这是不停地使用脚本在攻击IIS服务器的漏洞,从而获取系统权限
218.25.147.83也访问了80端口,下方信息中发现了C:\notworm,这是一个红色代码蠕虫攻击。
最后是4899端口,ip.dst==172.16.134.191 and tcp.dstport==4899
这个端口只有210.22.204.101访问过,能够查得4899端口是一个远程控制软件radmin服务端监听端口
接下来分析UDP的137端口,这个端口是NetBIOS相关协议,ip.dst == 172.16.134.191 and udp.port == 137
能够看到这里的全部IP地址进行访问的负载都是相同的,都是KAAAAA....AA的形式,这里推测应该是在进行NetBIOS查点
实验2中,crackme2.exe的测试验证时候,一开始使用的命令
crackme2.exe crackmeplease.exe
,发现依旧是输入错误的提示
查看了实验指导书,发现使用了copy命令。回忆代码分析时的strcmp函数,应当是当文件名是crackmeplease.exe才可以使用,不能单纯的给本来的crackme2.exe文件赋予新名称参数。使用copy命令后,去C盘发现多了个crackmeplease.exe文件,应该是用copy将crackme2.exe复制并将复制文件改了名。
tcpflow安装更新失败,发现kali连不上网……
去作了个饭,回来就行了……多是我网络不太稳定?
这次实验任务量比较重,看到题目这么多问题都几回敲响了退堂鼓……不过最后好歹是慢慢作完了。
实验操做也略微复杂,虽然在老师发布的资料文件里发现了应该是实验指导书的PDF文件,但指导书一点都不傻瓜教程,部分步骤没有详细操做,好比“查看整个程序的call flow”,怎么个查见解,我就对着界面那些小按钮一一试了很久,也去网上找了IDA使用教程。
实验过程当中也要感谢很多大佬不吝赐教。好比最后一个实验中查询UDP端口响应那里,我一开始没有显示出任何响应的UDP端口,但这与snort命令结果是不符的。孙启龙君帮我捉了虫~
此为本人网络攻防学习第九周的内容,若有不足,还请批评指正,不胜感激。