2017-2018-2 《网络对抗技术》 20155322 Exp4 恶意代码分析
1-实践目标
1.1-恶意代码分析
- 一般是对恶意软件做处理,让它不被杀毒软件所检测。也是渗透测试中需要使用到的技术。
- 要做好免杀,就时清楚杀毒软件(恶意软件检测工具)是如何工作的。AV(Anti-virus)是很大一个产业。其中主要的技术人员基本有编制恶意软件的经验。反过来也一样,了解了免杀的工具和技术,你也就具有了反制它的基础。
1.2-实践内容
- 系统运行监控(2分)
- 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
- 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
- 实际日志的分析还需要发挥下自己的创造力,结合以前学过的知识如linux的文本处理指令等进行。分析的难点在于从大量数据中理出规律、找出问题。这都依赖对结果过滤、统计、分类等进一步处理,这就得大家会什么用什么了。
- 恶意软件分析(1.5分)
- 分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。
- 该后门软件读取、添加、删除了哪些注册表项;读取、添加、删除了哪些文件;连接了哪些外部IP,传输了什么数据(抓包分析)
- 该实验重点在“分析”,不是“如何使用某软件”。组长、课题负责人要求写细一点,其他人可以重点放在分析上。
1.3-实践要求
- 基础问题回答
- 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
- 如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
- 实验总结与体会
- 实践过程记录
- 报告评分 1.5分
- 报告整体观感 0.5分
- 报告格式范围,版面整洁 加0.5。
- 报告排版混乱,加0分。
- 文字表述 1分
- 报告文字内容非常全面,表述清晰准确 加1分。
- 报告逻辑清楚,比较简要地介绍了自己的操作目标与过程 加0.5分。
- 报告逻辑混乱表述不清或文字有明显抄袭可能 加0分
2-实践过程
2.1 Mac下网络监控
我使用的操作系统是MacOS,因为已经用了很多年所以非常不情愿还是一直再拿Windows做实验……但是做新东西=花更多的时间,我的时间也很紧,Mac下的这些成果都是自己花时间在网上学习的,比较浅显但符合实验要求,若有不足望理解和指正,还有部分没有提到的信息可参考MacOS下netstat和lsof使用的若干问题这篇博客。
刚开始,我先寻找Mac中关于这方面的一些工具,来满足以下几个要求:
- 哪些进程在联网
- 连接的外部IP是哪里
- 对那些文件进行了操作
- 对结果过滤、统计、分类
花费了一些时间,确定了一个比较适合我的组合:
- 确定哪些进程在联网:netstat+lsof指令(原生)
- 外部IP:网络实用工具(Mac自带)+NetworkUtilty X(花了我18块大洋)
网络实用工具:
NetworkUtilty X:
- 文件操作:活动监视器(Mac自带)
- 统计分析:number表格(Mac自带)
介绍就免了,参考前言里面的博客,我们直接进入正题:
首先我们先观察一下联网进程:netstat -an
(像计划任务那样间隔更新可以使用-w参数,这里不做使用)
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 192.168.3.59.51013 64.233.189.101.443 SYN_SENT
tcp4 0 0 192.168.3.59.51011 17.248.160.84.443 ESTABLISHED
tcp4 0 0 192.168.3.59.51010 17.248.156.9.443 ESTABLISHED
tcp4 0 0 192.168.3.59.51009 58.205.214.147.443 ESTABLISHED
……
上面是某段记录,那么我想知道64.233.189.101这个使用了443端口的IP是什么:
我甚至能在地球上定位他的服务器位置:
谷歌的进程应该是没问题的,但是我好奇,我就要看看它做了啥(强行分析)。
既然它用了443端口,那么我看看443端口都有哪些进程在用吧:lsof -i :443
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Google 995 mac 12u IPv4 0xb1e186b93fa95b 0t0 TCP 192.168.3.59:51181->ti-in-f113.1e100.net:https (SYN_SENT)
Google 995 mac 84u IPv4 0xb1e186b93a5d3b 0t0 TCP 192.168.3.59:51134->52.187.123.66:https (ESTABLISHED)
Google 995 mac 104u IPv4 0xb1e186c60e8d3b 0t0 TCP 192.168.3.59:51185->ti-in-f102.1e100.net:https (SYN_SENT)
Google 995 mac 105u IPv4 0xb1e186b9483d3b 0t0 TCP 192.168.3.59:50974->146.185.175.64:https (ESTABLISHED)
Google 995 mac 108u IPv4 0xb1e186c543895b 0t0 TCP 192.168.3.59:51191->ti-in-f102.1e100.net:https (SYN_SENT)
Google 995 mac 111u IPv4 0xb1e186b91fa95b 0t0 TCP 192.168.3.59:51182->ti-in-f113.1e100.net:https (SYN_SENT)
Google 995 mac 114u IPv4 0xb1e186b92813db 0t0 TCP 192.168.3.59:51169->104.19.194.102:https (ESTABLISHED)
Google 995 mac 116u IPv4 0xb1e186b91f9ffb 0t0 TCP 192.168.3.59:51186->ti-in-f100.1e100.net:https (SYN_SENT)
Google 995 mac 121u IPv4 0xb1e186b94833db 0t0
……
好吧都是你(此时我正在用chrome看博客),行吧,网络部分看起来没问题嘛,那我看看你动了我什么文件:lsof -p 995
MacBook-Air:~ mac$ lsof -p 995
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Google 995 mac cwd DIR 1,4 1120 2 /
Google 995 mac txt REG 1,4 19072 8595250658 /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
Google 995 mac txt REG 1,4 26771408 8596864393 /usr/share/icu/icudt59l.dat
Google 995 mac txt REG 1,4 24576 6205008 /Users/mac/Library/Application Support/Google/Chrome/Default/QuotaManager
Google 995 mac txt REG 1,4 7168 6205019 /Users/mac/Library/Application Support/Google/Chrome/Default/databases/Databases.db
……
先贴这么多,其实这步通过活动监视器观看对人更加友好一点:
终端显示的非常详细,我们可以知道进程号,使用的用户,文件类型等等,甚至在那个磁盘分区里面用都会记录,NODE也出来了,已经底层到逻辑存储的地步了,非常nice,我可以通过直观的看到chrome用到的我本地的全部文件,嗯,看起来并没有什么问题。
记录太多了,在Mac的终端和活动监视器里看起来太麻烦了怎么办?number表格给我提供了解决方案:
通过设置过滤条件可以很方便的来调出想要的数据,或者通过数据生成图表,这个类似Excel,如果不熟悉可以通过number导出到Excel来进行操作,也是很方便的。
2.2 Windows下网络监控
这个网络监控我是使用Windows7的系统,如老师教程一样,配合windows计划任务与netstat命令来进行监控,并把数据输入到Excel表格中。
结合windows自带的计划任务,每5分钟执行netstat -bn
这条指令(这跟Mac中的很像),并将结果重定向到一个txt文件当中。
首先先建一个脚本:
date /t >> c:\netstatlog.txt
time /t >> c:\netstatlog.txt
netstat -bn >> c:\netstatlog.txt
下面创建计划任务:
- 触发器:一次,间隔5分钟,时长一个小时
- 执行任务:运行批处理文件netstatlog.bat
创建成功,等待,完成后将结果导入Excel表格,同样的和如上的Mac网络监控一样,我们可以通过其信息进行一定的分析操作:
随便挑了一个比较奇怪的地址:42.62.48.186
whois一下:
瓦塔?Forest Eternal Communication Tech?这是什么鬼?
百度一下:
啧啧啧,涨姿势。
下面是为了完成实验要求,使用老师提供的Sysmon工具:
- 配置文件Sysmoncfg.txt先坐好:
<Sysmon schemaversion="3.10">
<!-- Capture all hashes -->
<HashAlgorithms>*</HashAlgorithms>
<EventFiltering>
<!-- Log all drivers except if the signature -->
<!-- contains Microsoft or Windows -->
<DriverLoad onmatch="exclude">
<Signature condition="contains">microsoft</Signature>
<Signature condition="contains">windows</Signature>
</DriverLoad>
<NetworkConnect onmatch="exclude">
<Image condition="end with">chrome.exe</Image>
<Image condition="end with">iexplorer.exe</Image>
<SourcePort condition="is">137</SourcePort>
<SourceIp condition="is">127.0.0.1</SourceIp>
</NetworkConnect>
<CreateRemoteThread onmatch="include">
<TargetImage condition="end with">explorer.exe</TargetImage>
<TargetImage condition="end with">svchost.exe</TargetImage>
<TargetImage condition="end with">winlogon.exe</TargetImage>
<SourceImage condition="end with">powershell.exe</SourceImage>
</CreateRemoteThread>
</EventFiltering>
</Sysmon>
- 使用cmd指令安装:Sysmon.exe -i config_file_name
注意两点,一个是config_file_name是绝对路径,例如:Sysmon.exe -i C:\Sysmoncfg.txt
一个是进入到Sysmon.exe所在目录下运行指令,并且要使用管理员权限运行cmd,具体操作可以参考如何以管理员身份运行cmd
输入指令后出现如下弹窗,点击agree就好:
安装好了:
我们可以在服务中查看到sysmon服务:
也可以通过事件查看器查看日志,这里直接搜索事件查看器->应用程序和服务日志/Microsoft/Windows/Sysmon/Operational:
下面我们开始分析吧(微笑)
我点开了一条记录:
嗯,C:\Windows\System32\consent.exe,看到exe就有种莫名的亲切,特别是这种容易出问题而且无甚卵用的exe(微笑):
//至少microsoft说他是系统文件(就是告诉你别gao动shi它a)
The process known as Consent UI for administrative applications belongs to software Microsoft Windows Operating System by Microsoft (www.microsoft.com).
//microsoft也说了他会出现问he题he
Important: Some malware disguises itself as consent.exe, particularly when not located in the C:\Windows\System32 folder. Therefore, you should check the consent.exe process on your PC to see if it is a threat. We recommend Security Task Manager for verifying your computer's security. This was one of the Top Download Picks of The Washington Post and PC World.
这就很有搞头了,为什么这么说,如图:
emmmm看不懂英文的同学我来为你机翻一下:
*度一下:
369,000个搜索结果,所以除了问题很正常嘛,是不是,369,000呢,出了问题怎么办,是不是考虑换一个consent.exe呢,来来来我这里免费下载(微笑)
不闹了不闹了,这里建议大家不要随便到第三方网站下载软件,毕竟:
再找个联网事件(大家可以注意,事件3为联网事件tcp&udp)?
之前图省事下了WPS(因为小),那么分析一下IP?
又是一个云服务平台:
嗯感觉其实也并不能从IP上分析出什么问题,毕竟IP是可以被修改的,也可以瞎**跳转,在分析上,我跟偏向于分析进程修改的文件。
2.3 Mac下恶意软件分析
emmmm本来想做的但是看在我的虚拟机崩了3次的份上,我还是找些例子吧hhhhh(强行解释为什么我懒)其实最有效的还是一句“no zuo no die”,管住自己比任何杀软都要有效(好吧其实我买不起软件)。
好吧其实是没时间去找了,过几天出去比赛,在做题。所以这里我贴几个网上的案例:
EasyDoc Converter
恶意软件,技术名称为“Backdoor.MAC.Eleanor”,是一个允许用户通过在小窗口拖动转换文件的Mac应用程序,但暗地里下载并运行恶意脚本,这些脚本在启动时安装并注册三个新组件:Tor隐藏服务、PHP网络服务以及Pastebin客户端。
-
原理为:Backdoor.MAC.Eleanor为Mac创建一个.onion地址,Tor服务自动将受感染的计算机连接至Tor网络,并生成一个.onion域名,攻击者可以通过这个域名只使用一种浏览器访问用户系统。
PHP网络服务是连接的接收端,负责将从攻击者控制面板接收的命令解译至本地Mac操作系统。
Pastebin代理干预作用体现在:通过RSA与算法使用公共密钥对Pastebin URL加密后,Pastebin代理获取本地生成的.onion域名并将其上传至Pastebin URL。 -
后果:Backdoor.MAC.Eleanor能让罪犯操控并与本地文件系统交互、发起反向shell(Reverse shell)执行root命令,并发起和执行所有类型的PHP、PERL、Python、Ruby、Java或C语言脚本。
此外,攻击者还可以罗列在本地运行的应用程序,使用被感染的计算机发送电子邮件,并使用被感染计算机作为中介点连接并管理数据库,以及扫描开放端口的远程防火墙。
被感染的计算机基本上就成了攻击者“僵尸网络”的僵尸主机(bot),攻击者随时可以利用僵尸主机发送大量垃圾邮件、窃取被感染系统的敏感数据,将其作为DDoS攻击的僵尸主机或安装其它恶意软件。
Skype API
桌面端API,这个API可以为本地程序或插件提供相应的功能接口,第三方应用可以通过这个桌面API来与Skype的服务器进行通信。攻击者利用Skype桌面API中的这个安全问题来绕过其身份验证机制。恶意软件可以使用客户端名称标识符“SkypeDashbd Wdgt Plugin”来将自己伪造成SkypeDashboard的Widget插件程序,并绕过其身份验证机制直接与桌面API进行交互。
-
原理:当其他程序尝试访问桌面API的时候,系统会向用户发出通知,并请求用户同意操作。而此时,通过后门来通知桌面API的用户其工作机制与正常的通知流程是不一样的。如果使用这个后门,那么用户将不会收到系统的任何通知,而这也就意味着用户根本就没有机会去拒绝访问。这将允许任何应用程序在用户毫不知情的情况下通过这个后门来访问桌面API。
而且,Skype也不会对访问桌面API的程序进行验证,因为这些第三方程序会将自己伪装成SkypeDashboard插件程序。这也就意味着,任何的第三方应用(包括恶意软件)都可以利用Skype桌面API来实施非法操作。 -
后果:在之前的版本中,应用程序可以使用这个桌面API来访问Skype所提供的全部服务。这些服务包括但不仅限于:消息接收通知(以及消息内容)、修改信息、创建聊天会话、记录Skype的语音通话信息、以及检索用户的通讯录。在之后的版本中,桌面API访问消息内容的这个功能已经被去除了,但是其他的功能仍然保留了下来。
Fruitfly
后门,攻击者可利用其对受感染系统的进行完全控制,实现众多监视操作。VirusTotal恶意软件检测服务的统计显示:57款杀毒软件中,仅有22款可以检测到Fruitfly。
- 后果:Fruitfly可以捕捉屏幕截图、按键、网络摄像头图像,并从受感染Mac偷取数据。
它能执行shell命令、截图、控制鼠标动作、结束进程、甚至会在用户使用Mac时为攻击者发出警示信息。
海莲花(OceanLotus)
后门,已经有了各种各样的改进。一些改进包括病毒文件的使用,去除使用命令行工具,完善的字符串编码机制,使用加密的自定义二进制协议通信量,还有一个模块化的后门。
2.4 Windows下恶意软件分析
- 使用systracer
systracer可以给计算机做快照,分析计算机文件,文件夹和注册表项目的改变。
这里我给系统做三个快照:
未开启后门程序
开启后门程序
执行run persistence指令
这里前两个就不做比较了,主要是后面这个:run persistence
我们对比快照,发现了persistence需要传送的文件ZoajdcjX.vbs:
啧啧,发现问题!
- 使用proseecss moniter
还好这个软件有find功能,要不然我找半天也找不到……
2.5 基础问题回答
-
如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
- 这个在之前就已经分析过了:1. 哪些进程在联网2. 连接的外部IP是哪里3. 对那些文件进行了操作4. 对结果过滤、统计、分类,方法就是原生指令+活动监视器发现问题进程,网络实用工具或者NetworkUtilty X分析IP信息,原生指令leof+活动监视器调查文件使用情况。
-
如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
- 原生指令leof+活动监视器可以有效调查文件使用情况,主要调查该进程使用、修改或者关联的文件。
3-参考资料&实践体会
实践体会
通过这次实践,我发现学好网络攻防需要很多综合性的知识,我为了写这边博客学习(复习?)的前置知识……保守估计看了40+以上的博客,我甚至还看了《操作系统原理》(为什么参考MacOS下netstat和lsof使用的若干问题)也可以看我的朋友圈2333。
我感觉分析进程、监控系统也是个综合性比较强的操作,需要掌握一些操作系统进程、文件相关知识,需要了解网络方面的知识,需要掌握一些系统指令和调用参数,需要从一堆信息中看出问题,我觉得需要很多知识的积累,很多操作我都是一知半解,想掌握不是一时半会儿能了解的。
收获也是有的,大概了解了分析恶意代码的一个流程,也自己摸索出了套路,感觉时间花的还是很值得的。
但是路还是很长,慢慢来吧。