首页
社区
课程
招聘
[原创]木马TR/Offend.66568521分析过程
发表于: 2013-2-3 21:27 12794

[原创]木马TR/Offend.66568521分析过程

2013-2-3 21:27
12794

以下文章,完全原创,如有引用,请标明 by keieky.
    看来最近大家都忙着过寒假,于是乎人气明显冷落许多。为提高人气,我把自已这两天分析的一个木马的过程和大家分享一下。书写此文目的,不是想说这个样本的功能性质,毕竟这个木马已经被广泛查杀,只是想通过此例和大家探讨一下代码分析的过程。如有不当之处,还请指正。
  1.分析环境及工具
   首先介绍一下我的分析环境:
  OS:XP SP3虚拟机Vmware.
   TOOLS:如图所示
   前两排工具主要是为脱壳用的,分析主要用的是沙箱BSA和IDA Pro,当然MD是为了防止动态分析生成的病毒感染系统清除方便而用的。
  2.样本
  样本来源不记得了,好像是从哪个论坛下的非灭活样本,我将在附件中加以提供。
  名称:virussign.com_0a9f170cfa142b42cc8e8e5c9b47057a.exe。
  此样本加了upx壳,为方便分析,先脱壳。脱壳过程不多说,因为是upx么,最简单的那种,所以我就现看了一下论坛中脱壳的教程,用前两排的工具找popad,重建导入表什么的,一切很顺利(建议想学脱壳的同学可以从upx入手)。
  脱壳后的名称:dumped_1.exe,这就是我们即将分析的目标了。
  3.杀毒软件对样本的定义
  宿主机上安了360,对脱壳前后的两个样本进行了查杀,报毒如下:
virussign.com_0a9f170cfa142b42cc8e8e5c9b47057a.exe:(因为360用的是AntiVir引擎)所以 称之为:TR/Offend.66568521(若见更多细节,请参见:https://www.virustotal.com/file/aa63f063e907c0cfbe4b44bce2e713ff0f70e7e3cd43635341f1b6587fbcfdc1/analysis/)。
  dumped_1.exe:Backdoor.Win32.Gh0st.CV。
  加壳前后360报的不同,我想是因为脱壳后的特征变化了。
  4.动态分析过程
  通过拿到一个样本,首先应该考虑的是:它是不是个恶意代码,当然前提是你的杀软没有报警。虽然现在我们知道它是个木马,但是,我们还可能会问:它有哪些恶意的行为被认为是木马?要想看行为,最最最直观的,当然是API监控,或者说,环境监控。工具是我给大家推荐的:sandboxie & BSA.这里我不再多说如何使用,我们看一下在沙箱中运行样本后生成的报告。这里提示一下,在沙箱中运行的样本脱壳前后的都可以,因为它们的行为都是一样的。我一般关注两个报告:
(1)API 日志:
Executing: c:\样丫106\upx\1\dumped_1.exe
LoadLibrary(gdi32.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(kernel32.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(msvcrt.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(netapi32.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(oleaut32.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(ole32.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(shell32.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(shlwapi.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(user32.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(winmm.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(ws2_32.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(ws2help.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(wtsapi32.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(winsta.dll) [c:\样丫106\upx\1\dumped_1.exe]
GetModuleHandle(lz32.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(lz32.dll) [c:\样丫106\upx\1\dumped_1.exe]
GetModuleHandle(kernel32.dll) [c:\样丫106\upx\1\dumped_1.exe]
GetModuleHandle(Kernel32) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(comctl32.dll) [c:\样丫106\upx\1\dumped_1.exe]

OpenProcessToken(C:\样本106\upx\1\dumped_1.exe) [c:\样丫106\upx\1\dumped_1.exe]
GetModuleHandle(LPK) [c:\样丫106\upx\1\dumped_1.exe]
GetModuleHandle(LPK.DLL) [c:\样丫106\upx\1\dumped_1.exe]
GetModuleHandle(USER32) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(imm32.dll) [c:\样丫106\upx\1\dumped_1.exe]

CreateEvent(DINPUTWINMM) [c:\样丫106\upx\1\dumped_1.exe]
CreateEvent(SBIE_BOXED_ServiceInitComplete_RpcSs) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(advapi32.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(urlmon.dll) [c:\样丫106\upx\1\dumped_1.exe]

GetModuleHandle(iexplore.exe) [c:\样丫106\upx\1\dumped_1.exe]
GetModuleHandle(explorer.exe) [c:\样丫106\upx\1\dumped_1.exe]

CreateMutex(ZonesCounterMutex) [c:\样丫106\upx\1\dumped_1.exe]
CreateMutex(ZonesCacheCounterMutex) [c:\样丫106\upx\1\dumped_1.exe]
CreateMutex(ZonesLockedCacheCounterMutex) [c:\样丫106\upx\1\dumped_1.exe]

LoadLibrary(version.dll) [c:\样丫106\upx\1\dumped_1.exe]
GetModuleHandle(shlwapi.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(psapi.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(wininet.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(crypt32.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(msasn1.dll) [c:\样丫106\upx\1\dumped_1.exe]
CreateEvent(Global\crypt32LogoffEvent) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(avicap32.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(msvfw32.dll) [c:\样丫106\upx\1\dumped_1.exe]
CreateMutex(aa0533.3322.org) [c:\样丫106\upx\1\dumped_1.exe]
CreateRemoteThread(c:\样杌106\upx\1\dumped_1.exe) [c:\样丫106\upx\1\dumped_1.exe]

CreateProcess((null),c:\Windows\svchest000.exe,(null)) [c:\样丫106\upx\1\dumped_1.exe]
GetModuleHandle(winlogon.EXE) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(c:\windows\system32\mswsock.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(mswsock.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(apphelp.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(hnetcfg.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(rpcrt4.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(c:\windows\system32\wshtcpip.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(wshtcpip.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(dnsapi.dll) [c:\样丫106\upx\1\dumped_1.exe]
GetModuleHandle(advapi32) [c:\样丫106\upx\1\dumped_1.exe]

Executing: c:\windows\svchest000.exe
LoadLibrary(c:\windows\system32\winrnr.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(winrnr.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(wldap32.dll) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(gdi32.dll) [c:\windows\svchest000.exe]
LoadLibrary(kernel32.dll) [c:\windows\svchest000.exe]
LoadLibrary(msvcrt.dll) [c:\windows\svchest000.exe]
LoadLibrary(netapi32.dll) [c:\windows\svchest000.exe]
LoadLibrary(oleaut32.dll) [c:\windows\svchest000.exe]
LoadLibrary(ole32.dll) [c:\windows\svchest000.exe]
LoadLibrary(shell32.dll) [c:\windows\svchest000.exe]
LoadLibrary(shlwapi.dll) [c:\windows\svchest000.exe]
LoadLibrary(user32.dll) [c:\windows\svchest000.exe]
LoadLibrary(winmm.dll) [c:\windows\svchest000.exe]
LoadLibrary(rasadhlp.dll) [c:\样丫106\upx\1\dumped_1.exe]
GetModuleHandle(ws2_32.dll) [c:\样丫106\upx\1\dumped_1.exe]

connect( 221.130.179.36:1379 ) [c:\样丫106\upx\1\dumped_1.exe]
LoadLibrary(ws2_32.dll) [c:\windows\svchest000.exe]
LoadLibrary(ws2help.dll) [c:\windows\svchest000.exe]
LoadLibrary(wtsapi32.dll) [c:\windows\svchest000.exe]
LoadLibrary(winsta.dll) [c:\windows\svchest000.exe]
GetModuleHandle(lz32.dll) [c:\windows\svchest000.exe]
LoadLibrary(lz32.dll) [c:\windows\svchest000.exe]
GetModuleHandle(kernel32.dll) [c:\windows\svchest000.exe]
GetModuleHandle(Kernel32) [c:\windows\svchest000.exe]
LoadLibrary(comctl32.dll) [c:\windows\svchest000.exe]

OpenProcessToken(C:\WINDOWS\svchest000.exe) [c:\windows\svchest000.exe]
GetModuleHandle(LPK) [c:\windows\svchest000.exe]
GetModuleHandle(LPK.DLL) [c:\windows\svchest000.exe]
GetModuleHandle(USER32) [c:\windows\svchest000.exe]
LoadLibrary(imm32.dll) [c:\windows\svchest000.exe]
CreateEvent(DINPUTWINMM) [c:\windows\svchest000.exe]
CreateEvent(SBIE_BOXED_ServiceInitComplete_RpcSs) [c:\windows\svchest000.exe]
LoadLibrary(advapi32.dll) [c:\windows\svchest000.exe]
LoadLibrary(urlmon.dll) [c:\windows\svchest000.exe]
GetModuleHandle(iexplore.exe) [c:\windows\svchest000.exe]
GetModuleHandle(explorer.exe) [c:\windows\svchest000.exe]
CreateMutex(ZonesCounterMutex) [c:\windows\svchest000.exe]
CreateMutex(ZonesCacheCounterMutex) [c:\windows\svchest000.exe]
CreateMutex(ZonesLockedCacheCounterMutex) [c:\windows\svchest000.exe]
LoadLibrary(version.dll) [c:\windows\svchest000.exe]
GetModuleHandle(shlwapi.dll) [c:\windows\svchest000.exe]
LoadLibrary(psapi.dll) [c:\windows\svchest000.exe]
LoadLibrary(wininet.dll) [c:\windows\svchest000.exe]
LoadLibrary(crypt32.dll) [c:\windows\svchest000.exe]
LoadLibrary(msasn1.dll) [c:\windows\svchest000.exe]
CreateEvent(Global\crypt32LogoffEvent) [c:\windows\svchest000.exe]
LoadLibrary(avicap32.dll) [c:\windows\svchest000.exe]
LoadLibrary(msvfw32.dll) [c:\windows\svchest000.exe]
CreateMutex(aa0533.3322.org) [c:\windows\svchest000.exe]
GetModuleHandle(mscoree.dll) [c:\windows\svchest000.exe]
     从中我们可以看出该样本加载了哪些动态库,创建了哪些互斥量,文件,注册表等。当然不是很清淅,其实我的目的是看有些关键的函数被调用,如CreateMutex,OpenProcessToken,CreateProcess,CreateRemoteThread等等,这些将为静态分析提供好的线索。
   如果你觉得这些不够直观的话,我们还可以关注一下它的生成报告,很清晰噢。
(2)Report
[ Changes to filesystem ]
   * Creates file C:\WINDOWS\BJ.exe
   * Creates file (hidden) C:\WINDOWS\SbiePst.dat
   * Creates file (hidden) C:\WINDOWS\svchest000.exe

[ Changes to registry ]
   * Modifies value "NukeOnDelete=00000001" in key HKEY_LOCAL_MACHINE\software\microsoft\Windows\CurrentVersion\Explorer\BitBucket
          old value empty
   * Modifies value "Common Desktop=C:\Documents and Settings\All Users\Lhb?" in key HKEY_LOCAL_MACHINE\software\microsoft\Windows\CurrentVersion\Explorer\Shell Folders
          old value "Common Desktop=C:\Documents and Settings\All Users\桌面"
   * Creates value "Kris=C:\7h,g106\upx\1\dumped_1.exe" in key HKEY_LOCAL_MACHINE\software\microsoft\Windows\CurrentVersion\Run
   * Creates Registry key HKEY_LOCAL_MACHINE\system\CurrentControlSet\Control\MediaResources\msvideo
   * Creates value "SymbolicLinkValue=5C00520045004700490053005400520059005C0055005300450052005C00530061006E00640062006F0078005F00410064006D0069006E006900730074007200610074006F0072005F00440065006600610075006C00740042006F0078005C0075007300650072005C00630075007200720065006E0074005F0063006C0061007300730065007300" in key HKEY_CURRENT_USER\software\classes
   * Modifies value "Desktop=C:\Documents and Settings\Administrator\Lhb?" in key HKEY_CURRENT_USER\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
          old value "Desktop=C:\Documents and Settings\Administrator\桌面"
   * Creates value "FolderType=Documents" in key HKEY_CURRENT_USER\software\Microsoft\Windows\ShellNoRoam\Bags\45\Shell

[ Network services ]
   * Connects to "221.130.179.36" on port 1379.

[ Process/window information ]
   * Creates an event named "SBIE_BOXED_ServiceInitComplete_RpcSs".
   * Creates a mutex "ZonesCounterMutex".
   * Creates a mutex "ZonesCacheCounterMutex".
   * Creates a mutex "ZonesLockedCacheCounterMutex".
   * Creates a mutex "aa0533.3322.org".
   * Creates process "(null),c:\Windows\svchest000.exe,(null)".
    呵呵,看到了吧,这里记录了样本对文件系统,注册表,网络及系统环境的影响。清楚直观,一目了然,想不说是个木马都不容易。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 6
支持
分享
最新回复 (14)
雪    币: 62
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
看看说。。。。
2013-2-3 21:50
0
雪    币: 222
活跃值: (42)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
5.静态分析
    其实看到动态分析我们已经清楚的知道这是一个木马,因为它释放文件Bj.exe,svch0st080.exe,改注册表的Run项,连接某个域名的xxxx端口。那么,我们还要静态分析做什么?答案我想是....
      学习。。。。。
    呵呵,说笑了,学习只是一方面,本版块不是想通过分析促进大家共同提高么,所以当然把静态分析过程共享一下比较好。但其实我的目标不仅仅是学习,而是。。。。
   找不同,这里不是游戏找不同,而是我们都知道,动态分析只能表现代码的部分行为,而很多隐藏行为是不会展现的。静态分析从理论上更全面,所以,到底还有什么行为没有展现,如何找到这些行为,它们是怎么样组织的,这其实才是静态分析的目的。事实证明,静态分析完全是有必要的,因为木马的很多行为是靠控制端(攻击者)发送命令才会执行,这一点在稍后的分析中会体现。

   工具:IDA Pro 5.5。很可惜,到现在我都没有一个可以用的反编译插件hex rays.所以只能靠读汇编代码了。
   以下是对脱壳代码dumped_1.exe的静态分析。
   (1)技巧1
    我不得不说,这个样本给我分析起来带来了一些困绕,首先遇到的问题是函数的动态加载;经过脱壳后的代码从导入表中可以看到很多函数,但是在实际的代码中,对这些函数的调用并不是像我们通常用call CreateProcessEx之类的指令。而更多的是在数据段中开避一个dword,然后在该处写入一个动态加载函数,该函数完成对API地址的动态获取。举例子先:
UPX0:0040E015                 push    offset name     ; "aa0533.3322.org"
UPX0:0040E01A                 push    0
UPX0:0040E01C                 push    0
UPX0:0040E01E                 call    dword_478A90   
dword_478A90到底代表什么函数?IDA没给出交叉引用,但你到这个地址看一下就会发现:
UPX0:00478A90 dword_478A90    dd 0    ; DATA XREF: sub_40D5B0+17w
UPX0:00478A90                                         ; WinMain(x,x,x,x)+CEr
这两条指令说明函数sub_40D5B0对该进行了修改,那么这个函数是什么呢?再跟进去:
UPX0:0040D5B0 sub_40D5B0      proc near               ; CODE XREF: sub_40D5A0j
UPX0:0040D5B0                 push    offset aCreatemutexa ; "CreateMutexA"
UPX0:0040D5B5                 push    offset LibFileName ; "KERNEL32.dll"
UPX0:0040D5BA                 call    LoadLibraryA
UPX0:0040D5C0                 push    eax             ; hModule
UPX0:0040D5C1                 call    GetProcAddress
UPX0:0040D5C7                 mov     dword_478A90, eax
UPX0:0040D5CC                 retn
UPX0:0040D5CC sub_40D5B0      endp
看到了吧,实际上就是CreateMutexA的地址;也就是说call   dword_478A90== call CreateMutexA;别小看这个动态加载(或者叫间接引用),它对于静态分析影响很大,如果只是一个函数被间接引用还好,但可是有大量的API都是这样做的,因此,我不得不花很多的时间在数据段这些函数地址中加入注释引用,方使程序好读些。
(2)技巧2
     IDA中的动态调试。程序分析首先停到WinMain函数,这个函数就是我们所谓的入口点函数,也是代码真正开始的地方。这里大家可以用Graph view看代码,这样流程更为直观。分析的重点还是API,遇到API你要跟进去看一看。这个WinMain很简单,几乎你动态监控的所有行为都有体现,主要就是通过创建不同功能的线程来实现:如创建文件Bj.exe和svchost080.exe的线程,判断系统是否安装了360,瑞星等杀软(根据这个我初步判断估计是国内人写的),生成注册表项,以及向目标URL和端口连接等等。
   函数众多,我在idb中有详细注释,不再多解释了。我的个人小经验是在winmain中的代码我们可以通过IDA提供的动态调试跟踪执行,好处是可以很轻易的获得函数参数啊,呵呵,这对于确定目标很有好处。不过一定要配合MD,以便调试完删除新建的文件注册表等。
  接下来感到郁闷的事情到了,你会发现动态调试F9到所有线程都创建完后各线程开始Sleep了。而此时,你分析到的Winmain有其可达的函数基本与动态分析监控到的API一致。
  没有新的事件发生,难道,分析就到此为止了么???????
2013-2-3 22:00
0
雪    币: 3373
活跃值: (1368)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
4
话说想期待下IDA 分析 看完才发现 用BSA 搞掉 就没了、、

话说 楼主你一口气发完好不,搞的跟小说样、、一会一更,太诱惑人了
2013-2-3 22:03
0
雪    币: 222
活跃值: (42)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
(3)一定还有不一样的地方
   接下来就要靠经验了。IDA分析出来的函数如此之多(1148个),肯定还有很多功能没有分析出来。其实稍微动下脑子就可以知道,前面分析的功能都是木马的自保护(自我复制,启动)而已,到底它要干什么,我们根本没有分析到,即使是动态执行,也没有展现。原因可想而知,它联系到目标域名后,攻击者没下达下一步执行的命令。但是,这些命令及命令要实现的功能,一定还在代码中。因此,我的目标就是:
   找到它。。。。
    我不得不承认,虽然最终我找到了它,但还是有一个问题到现在没有解决,就是到底代码中何处调用了它,我到现在都不清楚,这个问题留给大家再研究研究,相信有高手高手高高手帮我解惑。
   抛开这个让我郁闷了很长到现在都没有解决的问题,还是看怎么样找到那些隐藏的代码。方法其实很简单,还是从API入手。
   导入表中有很多关键API,这些API都与木马的行为有关,比如说:copyFile.创建文件。正常的思路是这样,找到导入表中的CopyFile,看一下代码中哪里有引用,然后分析引用的上下文。如果光是这样的话,你会发现以下的情况:
UPX0:0046B074 ; BOOL __stdcall CopyFileA(LPCSTR lpExistingFileName, LPCSTR lpNewFileName, BOOL bFailIfExists)
UPX0:0046B074 CopyFileA       dd ?                    ; DATA XREF: sub_40DC80+37r
也就是说,代码在sub_40DC80函数中调用了CopyFile,而这个函数是干什么的?跟进去,你会发现该函数是已被分析过的由WinMain调用实现将样本复制为Bj.exe和svchost080.exe的。
   一个木马只在这一个地方调用了CopyFile,这正常么?不正常么?正常么?一定是我们还有地方被乎视。呵呵,如果你还记忆清楚的话,我前面说过,很多API不是直接调用导入表,而是LoadLibrary的。所以,其实你应该这样做:
   在IDA菜单中“Search”-->text中,输入:CreateFile(这里换成CreateFile更直观些,CreateFile并未出现在Import表中),列出代码中所有出现的位置,你就会发现,原来还有很多地方引用啊:
UPX0:00405520 sub_405520 push    offset aCreatefilea ; "CreateFileA"
UPX0:004074E0 sub_4074E0 push    offset aCreatefilea ; "CreateFileA"
UPX0:004074F7 sub_4074E0 mov     dword_4781C0, eax ; CreateFile     
UPX0:004083C3 sub_408320 call    dword_4781C0    ; CreateFile      
UPX0:0040AEA0 sub_40AEA0 push    offset aCreatefilea ; "CreateFileA"
UPX0:0040DC00 sub_40DC00 push    offset aCreatefilea ; "CreateFileA"
UPX0:0040F280 sub_40F280 push    offset aCreatefilea ; "CreateFileA"
UPX0:004102F8 sub_410200 call    dword_478BDC    ; CreateFileA      
UPX0:00410560 sub_410560 push    offset aCreatefilea ; "CreateFileA"
UPX0:00410577 sub_410560 mov     dword_478BDC, eax ; CreateFileA   
UPX0:00475618            ; char aCreatefilea[]                     
UPX0:004781C0            dword_4781C0 dd 0       ; CreateFile      
UPX0:00478BDC            dword_478BDC dd 0       ; CreateFileA   
这是我最烦恼的地方,看到没,光一个CreateFile,在程序中有很多的函数都实现了动态获取,换句话说,sub_405520   ,sub_4074E0 ,sub_4074E0 ...都是对CreateFile地址的动态获取,你要分析哪些地方调用了CreateFile,那就得对代码中引用上述这些函数的位置上下文判断,那不是要累死?
没关系,试试吧,看到
UPX0:004083C3 sub_408320 call    dword_4781C0    ; CreateFile
UPX0:004102F8 sub_410200 call    dword_478BDC    ; CreateFileA
这是对CreateFile直接调用的地方,去瞧一瞧(累死我了,我再开一个新回复贴)。
2013-2-3 22:30
0
雪    币: 222
活跃值: (42)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
[QUOTE=CRoot;1140609]话说想期待下IDA 分析 看完才发现 用BSA 搞掉 就没了、、

话说 楼主你一口气发完好不,搞的跟小说样、、一会一更,太诱惑人了[/QUOTE]

我也想啊,这不是整理思路现敲么,还好我五笔输入法写得快些,休息一下,换个脑子。
2013-2-3 22:31
0
雪    币: 222
活跃值: (42)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
(4)找到源头
   话说刚才分析到UPX0:004083C3 sub_408320 call    dword_4781C0    ; CreateFile位置了,进去看一下,有收获。
    sub_408320具体代码就不列了,长,看着会眼晕,我大体总结下,就是创建一个设备驱动(DeviceIoControl),并提升权限(OpenProcessToken,LookupPrivilegeValueA,AdjustTokenPrivileges)。典型的木马行为啊,行为啊,行为啊。
    那就接着看是谁调用了它呗。用交叉引用“xrefs to”,你会发现,原来是函数sub_40A300。
   验证一下呗:刚才不还有个UPX0:004102F8 sub_410200 call    dword_478BDC    ; CreateFileA么,和上面一样,sub_410200完成的是一个“从InternetUrl或IP中接收一个文件并存在本地”的功能。这是什么?升级有木有?新的模块加载有木有?不是木马行为是什么?同样,通过xrefs to,你会发现,呵呵,源属同宗啊,最上面都是Sub_40A300啊。
(5)面纱揭开。
  既然所有矛头都指向sub_40A300,那么我们就看看它到底是谁?
  进入到函数sub_40A300,如果此刻你还是Graph View模式的话,你会看到。。。
  switch case流图结构有没有?呵呵,跳转表啊,典型的switch case结构啊。这印证了什么?如果你是攻击者,是不是希望你发送一个命令,程序执行一个行为?怎么组织程序,当然是switch case最方便啊。它的每一个分支,都是一个线程,或者说是一个行为。当然,里面有很多类似的线程,如对网络的操作,我不确定是为了混淆还是真的有区别。我对每个行为都简单加了个注释,未必完全准确,但差不了太多。
  这就是我们要找的隐藏行为的代码源头,这是依靠静态分析得来的。
(6)总结
  当我花了近一晚上时间写这篇文章时,我希望它是值得的,因为很多童鞋都在为不知从哪儿开始分析而困惑,我能力有限,分析也许很浅薄,但是我觉得它对于入门者是有用的,所以和大家共享。当然,到现在我还是有个遗憾,那就是前文所说的问题:到底代码中哪里调用了sub_40A300我到现在都没搞清楚,如果有哪位同学分析了,知道了,不妨告诉我。再这里先感谢!
  最后说一句,大家不要怕自已水平低而不敢说,而是大胆分析,大胆分享,只有这样,我们才能进步。
  最后祝大家晚安!!!!!!!!!!!!!!!
                                                    by keikey  22:53 2013-02-03
2013-2-3 22:57
0
雪    币: 257
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
帮忙看下,有内容,有过程!很好!晚安!将所有文字编辑到一个就好了!
2013-2-4 01:23
0
雪    币: 219
活跃值: (793)
能力值: (RANK:290 )
在线值:
发帖
回帖
粉丝
9
顶~~~大家一到新年就很忙啊
2013-2-4 11:00
0
雪    币: 3373
活跃值: (1368)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
10
支持下楼主,楼主的写作语言不错,不会像教科书那样死板,看KSSD里面好些文章看的我昏昏欲睡,你的文章有些地方,能带我不少思考。求楼主新作!!
2013-2-4 12:09
0
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
写的 不错,很容易读懂,适合我这样的入门级
2013-2-4 19:41
0
雪    币: 222
活跃值: (42)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
感谢各位鼓励,在下一定继续努力,和大家共同进步!
2013-2-4 21:26
0
雪    币: 1163
活跃值: (137)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
13
建议楼主整理下成一个word或者pdf。
2013-3-8 10:53
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
分析得非常详细,对我有帮助,支持一下了。
2013-3-8 14:20
0
雪    币: 148
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
确实通俗易懂啊
楼主再弄些好的
2013-4-3 00:14
0
游客
登录 | 注册 方可回帖
返回
//