恶意代码分析实战——静态分析基础技术

对Lab01-01.exe和Lab01-01.dll进行分析
问题

  1. 将文件上传至http://www.VirusTotal.com进行分析并查看报告。文件匹配到了已有的反病毒软件特征吗?

首先查看Lab-01-01.exe。
chrome_wFdEMK6bBe.png
然后查看Lab01-01.dll。
chrome_5vVPK0iPYf.png
这两个文件应该都是恶意文件。

  1. 这些文件是什么时候编译的?

查看PE文件的结构:
ApplicationFrameHost_h9WWpHS2zK.png
通过PE Tools查看文件头:
vmware_qXZYiq1B2e.png
Lab-01-01.exe 编译时间是2010年12月19日 16:16:19.
Lab-01-01.dll 编译时间是2010年12月19日 16:16:38.
这两个文件编译的时间非常接近,极有可能就是同时编译的。

  1. 这两个文件中是否存在迹象说明它们是否被加壳或混淆?如果是,这些迹象在哪里?

vmware_zrzCi9wKnl.pngvmware_RK25RRT7Tx.png
两个文件都没有加壳迹象。

  1. 是否有导入函数显示出了这个恶意代码是做什么的?如果是,是哪些导入函数?

Lab-01-01.exe :
vmware_Eipyi34CUt.png
导入函数有很多,一个一个看:
Kernel32.dll

  • CloseHandle:关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等。在CreateThread成功之后会返回一个hThread的handle,且内核对象的计数加1,CloseHandle之后,引用计数减1,当变为0时,系统删除内核对象。
  • CopyFileA:将现有文件复制到新文件。
  • CreateFileMappingA:为指定文件创建或打开命名或未命名的文件映射对象。
  • FindClose:关闭由 FindFirstFile、FindFirstFileEx、FindFirstFileNameW、FindFirstFileNameTransactedW、FindFirstFileTransacted、FindFirstStreamTransactedW 或 FindFirstStreamW 函数打开的文件搜索句柄。
  • FindFirstFileA/FindNextFileA:用于搜索文件目录和枚举文件系统的函数。
  • IsBadReadPtr:验证调用进程是否具有对指定内存范围的读取访问权限。
  • mapViewOfFile :映射一个文件到内存,将文件内容变得通过内存地址可访问。启动器、装载器和注入器使用这个函数来读取和修改PE文件。通过使用mapViewOfFile 函数,恶意代码可以避免使用WriteFile来修改文件内容。
  • UnmapViewOfFile**😗*从调用进程的地址空间取消映射文件的映射视图。

其中,FindFirstFileA/FindNextFileA和CopyFileA表示这个程序可能会将自身复制到一个指定路径中去。
Lab-01-01.dll :
vmware_EtU06CwlHI.png
Kernel32.dll:

  • CloseHandle:关闭句柄
  • CreateMutexA:创建一个互斥对象,可以被恶意代码用来确保在给定时刻只有一个实例在系统上运行。恶意代码经常使用固定名字为互斥对象命名,这样他们就可以成为一个很好的主机特征,来检测系统是否感染了一个恶意代码。
  • CreateProcessA:创建一个新进程。
  • OpenMutexA:打开一个双向互斥对象的句柄,可以被恶意代码用来确保在任意给定时间在系统上只能有一个运行实例。恶意代码通常使用固定名字来为互斥对象命名,因此可以用作很好的主机特征。
  • Sleep:使程序暂停一段时间。

CreateProcessA和Sleep。这两个函数普遍在后门程序中使用。这些函数在exec与sleep字符串结合使用时,需要特别关注。exec字符串可能是通过网络来给后门程序传送命令,让它通过CreateProcess函数运行一个程序的。sleep字符串可能用于命令后门程序进入休眠状态。

  1. 是否有任何其他文件或基于主机的迹象,让你可以在受感染系统上查找?

C:\Documents and Settings\Administrator\桌面>strings Lab01-01.exe
UVWj
ugh 0@
_^][
SUVW
h00@
_^][
SUVW
h|0@
D P j l Pj l Pjl\u
S Q W R F x R V P D QWR FxRVP D QWRFxRVPD 3 D 8 R t 8 R t 8 R t < f T 3 D 8 R t 8R t 8Rt<f T 3D8Rt8Rt8Rt<fTPR
hL0@
h|0@
hD0@
_^]3
hp @
SVW
%8 @
%D @
%\ @
%` @
CloseHandle
UnmapViewOfFile
IsBadReadPtr
MapViewOfFile
CreateFileMappingA
CreateFileA
FindClose
FindNextFileA
FindFirstFileA
CopyFileA
KERNEL32.dll
malloc
exit
MSVCRT.dll
_exit
_XcptFilter
__p___initenv
__getmainargs
_initterm
__setusermatherr
_adjust_fdiv
__p__commode
__p__fmode
__set_app_type
_except_handler3
_controlfp
_stricmp
kerne132.dll
kernel32.dll
.exe
C:*
C:\windows\system32\kerne132.dll
Kernel32.
Lab01-01.dll
C:\Windows\System32\Kernel32.dll
WARNING_THIS_WILL_DESTROY_YOUR_MACHINE

有文件目录,还有kerne132.dll这个程序,与Kernel32.dll容易混淆。检查C:\Windows\System32\kerne132.dll来发现额外的恶意活动。请注意,文件kerne132.DLL,用数字1代替了字母l,是为了看起来像是系统文件kernel32.dll。这个文件可以用来在主机作为恶意代码感染的迹象进行搜索。

  1. 是否有基于网络的迹象,可以用来发现受感染机器上的这个恶意代码?

使用strings命令。
Lab-01-01.dll :

C:\Documents and Settings\Administrator\桌面>strings Lab01-01.dll
L$xQh
IQh `
L 4 P Q j D 4PQj D 4PQjD\D
t WVS
NWVS
u7WPS
u&WVS
_1
CloseHandle
Sleep
CreateProcessA
CreateMutexA
OpenMutexA
KERNEL32.dll
WS2_32.dll
strncmp
MSVCRT.dll
free
_initterm
malloc
_adjust_fdiv
exec
sleep
hello
127.26.152.13
SADFHUHF
/0I0[0h0p0
141G1[1l1
1Y2a2g2r2
3!3}3

发现dll文件中有ip地址,sleep,exec这种函数,可能会进入此ip地址进行下载文件,后门程序。

  1. 你猜这些文件的目的是什么?

.dll文件可能是一个后门
.exe文件是用来安装与运行DLL文件的

1.2 Lab 1-2

分析Lab01-02.exe文件
问题:
1.将Lab01-02.exe文件上传至https://www.virustotal.com/进行分析并查看报告。文件匹配到了已有的反病毒软件特征码?
Lab01-02.exe匹配到已有的反病毒软件特征,截图如下:
chrome_THzOTr71wD.png
2.是否有这个文件被加壳或混淆的任何迹象?如果是这样,这些迹象是什么?如果该文件被加壳,请进行脱壳,如果可能的话?
拖入PEiD中,发现有壳。
vmware_Q5WjsHZoyA.pngvmware_ODa0d9YKmX.png
UPX的壳,可以使用Free UPX壳。
vmware_f5R0iKFK55.png
脱壳成功。
vmware_keBKtqgTK5.png
3.有没有任何导入函数能够暗示出这个程序的功能?如果是,是哪些导入函数,它们会告诉你什么?
查看导入函数和答案(哈哈),有一些比较有意思的导入函数,CreateServiceA、InternetOpenA和InternetOpenUrlA。
CreateService:创建一个可以在启动时刻运行的服务。恶意代码使用CreateService这个函数来持久化、隐藏,或是启动内核驱动。
InternetOpenA:初始化WinINet中的一些高层次互联网访问函数,比如InternetOpenUrl和InternetReadFile。搜索InternetOpen函数是中岛互联网访问功能初始位置的一个好方法。InternetOpen函数的一个参数是User-Agent,有时也可以作为基于网络的特征码。
InternetOpenUrlA:使用FTP、HTTP或HTTPS协议连接来打开一个特定的URL,如果URL固定,则可以作为基于网络的特征码。
4.哪些基于主机或基于网络的迹象可以被用来确定被这个恶意代码所感染的机器?
strings找到的字符串:

C:\Documents and Settings\Administrator\桌面>strings Lab01-02.exe
h(0@
Vh(0@
L$,j
=0 @
hT0@
=p @
h00@
SVW
=l0@
5p0@
%< @
%L @
%d @
%h @
KERNEL32.DLL
ADVAPI32.dll
MSVCRT.dll
WININET.dll
SystemTimeToFileTime
GetModuleFileNameA
CreateWaitableTimerA
ExitProcess
OpenMutexA
SetWaitableTimer
WaitForSingleObject
CreateMutexA
CreateThread
CreateServiceA
StartServiceCtrlDispatcherA
OpenSCManagerA
_exit
_XcptFilter
exit
__p___initenv
__getmainargs
_initterm
__setusermatherr
_adjust_fdiv
__p__commode
__p__fmode
__set_app_type
_except_handler3
_controlfp
InternetOpenUrlA
InternetOpenA
MalService
Malservice
HGL345
http://www.malwareanalysisbook.com
Internet Explorer 8.0

一个名为Malservice的服务,并通过到http://www.malwareanalysisbook.com的网络流量,来检查被恶意代码感染的主机。

1.3 Lab1-3

分析Lab01-03.exe文件
问题:
1.将Lab01-03.exe文件上传至https://www.virustotal.com/进行分析并查看报告。文件匹配到了已有的反病毒软件特征码?
Lab01-03.exe匹配到已有的反病毒软件特征,截图如下:
chrome_1pHWQOizZ8.png
2.是否有这个文件被加壳或混淆的任何迹象?如果是这样,这些迹象是什么?如果该文件被加壳,请进行脱壳,如果可能的话?
拖入PEiD, FSG 1.0 -> dulek/xt:
vmware_16DGJ3YMy6.png
使用LinxerUnpacker进行脱壳:
vmware_OOHNBsne7s.png
脱壳成功。
vmware_TOhTkOogVS.png
看看导入函数,看不懂哈哈哈。
3.有没有任何导入函数能够暗示出这个程序的功能?如果是,是哪些导入函数,它们会告诉你什么?
查一查函数的用处:
OlerInitialize:用来初始化COM库。使用COM对象的程序必须在调用任何其他COM功能之前,调用这个函数。
CoCreateInstance:创建一个COM对象。COM对象提供了非常多样化的功能。类标识(CLSD)会告知你哪个文件包含着实现COM对象的代码。
使用了这个组件对象模型。
4.哪些基于主机或基于网络的迹象可以被用来确定被这个恶意代码所感染的机器?
vmware_TLUwmdDRT4.png
脱壳后的程序的字符串中没有看到什么东西,答案说到后面学会手动脱壳后再来解答这个问题。

1.4 Lab1-4

分析Lab01-04.exe文件
问题:
1.将Lab01-04.exe文件上传至https://www.virustotal.com/进行分析并查看报告。文件匹配到了已有的反病毒软件特征码?
Lab01-03.exe匹配到已有的反病毒软件特征,截图如下:
chrome_PuqsENbe9g.png
2.是否有这个文件被加壳或混淆的任何迹象?如果是这样,这些迹象是什么?如果该文件被加壳,请进行脱壳,如果可能的话?
vmware_i7sSH9TLIm.png
看起来似乎是没有壳。
3.这个文件是什么时候被编译的?
vmware_sCFAjIVFxq.png
15年出版的书,出现19年编译的程序,哈哈哈。
4.有没有任何导入函数能够暗示出这个程序的功能?如果是,是哪些导入函数,它们会告诉你什么?
vmware_fG11Zfh449.png
创建文件和写入文件的函数。
WinExec是运行一个程序,可能会是去运行一个后门程序。
vmware_Bkn2yqv6HB.png
有一些关于资源的函数,说明这个程序可能对他的资源部分进行嗲用。
vmware_Lge82NY809.png
AdjustTokenPrivileges:用来启用或禁用特定的访问权限。执行进程注入的恶意代码经常会调用这个函数,来取得额外的权限。
5.哪些基于主机或基于网络的迹象可以被用来确定被这个恶意代码所感染的机器?
vmware_OnO3ROabYX.png
有一个网址,有\system32\这样一个目录,还有URLDownloadToFileA这个后台下载的API函数(这个函数可以与winexec结合使用,然后就是运行后台下载的程序),还有获取windows目录的函数,可能会将自身复制到一个目录下,或者将下载的程序转到目录下进行混淆。
6.这个文件在资源段中包含一个资源。使用Resource Hacker工具来检查资源,然后抽取资源,从资源中你能发现什么吗?
vmware_Fxk6YJLo48.png
这段字符是在PE文件开始处的DOS头部中都会包含的错误消息,所以这个程序的资源中应该是隐藏了一个PE文件。我们把它保存下来看看。
vmware_p7Fx1IyWps.png
这里没打勾,确实是exe文件。
使用strings命令查看一下。
vmware_NC0t8EQS7p.png
查看一下导入表。
vmware_o6tbU5bzcy.png
vmware_vDX5a7cwN2.png
查看导入表,该嵌入文件在访问一些网络函数,它调用了URLDownloadToFile,一个由恶意下载器普遍使用的函数,它调用了WinExec函数,可能执行了下载到的文件。

最后

从时代发展的角度看,网络安全的知识是学不完的,而且以后要学的会更多,同学们要摆正心态,既然选择入门网络安全,就不能仅仅只是入门程度而已,能力越强机会才越多。

因为入门学习阶段知识点比较杂,所以我讲得比较笼统,大家如果有不懂的地方可以找我咨询,我保证知无不言言无不尽,需要相关资料也可以找我要,我的网盘里一大堆资料都在吃灰呢。

干货主要有:

①1000+CTF历届题库(主流和经典的应该都有了)

②CTF技术文档(最全中文版)

③项目源码(四五十个有趣且经典的练手项目及源码)

④ CTF大赛、web安全、渗透测试方面的视频(适合小白学习)

⑤ 网络安全学习路线图(告别不入流的学习)

⑥ CTF/渗透测试工具镜像文件大全

⑦ 2023密码学/隐身术/PWN技术手册大全

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉【整整282G!】网络安全&黑客技术小白到大神全套资料,免费分享!

扫码领取

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网安导师小李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值