顯示具有 逆向工程 標籤的文章。 顯示所有文章
顯示具有 逆向工程 標籤的文章。 顯示所有文章

2009年3月28日 星期六

手工查杀木马(四)

服务型态的挂马在反组译上比较麻烦,因为大部分都会附加在svchost.exe上。如果它在服 务的属性设置之路径型式为C:\WINDOWS\system32\svchost.exe -k netsvcs,则可以先由procmon找到已存在的pid,attach到此process,设置中断点于呼叫ServiceMain()处;若找不到此pid,表示此服务群组尚未执行,则需于机码中设置启动选项,指示svchost运行时马上启动debugger,启动后设置中断点于呼叫ServiceMain()处。

晚近病毒及挂马为了提高隐藏成功的机率,在函数呼叫上会动许多手脚。正常的函数呼叫会遵循esp/ebp/call/ret的约定,ida pro等静态分析程式也是利用这个性质来分析函数的范围;而恶意程式则会蓄意破坏静态分析的逻辑,例如以不返回的call进行本质上的jmp,利用push/pop等直接对stack进行写入,以mov及ret指令更改esp,配合ret跳至stack中预先写入的位置,以罕见的运算设置状态旗标直接产生所需要的位置或数值以pushf写入stack。

利用ollydbg的trace功能,我们可以将程式的执行过程log下来,以了解程式中执行的流程,并且对重要的位址设定硬体中断,因此能了解实际上进行写入或存取的指令位址。

手工查找木马(三)--反组译服务型态挂马

使用ollydbg进行跟踪及反组译服务型态挂马的程序如下:

修改机码HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\svchost.exe,增加一字串值Debugger,指向ollydbg
暂停防毒程式
*执行rundll32 ******.dll RundllInstall以注册此服务
启动services.msc->MS Media Control Center中对应之服务
*设定中断点至010011c9,待dll载入后挂起
run
(设定中断点至dll的ServiceMain,100049b0
设定中断点至dll的StartAddress,10002d10
run
(设定log/中断点至createthread
view->executable modules->kernel32单击右键,选view resource strings,找到createthread,设中断或log
(设定Always trace over system DLLs
设定中断点至 1001261F(加密的呼叫), 10002e90(第一执行绪), 100134DE, (10002e90,) 记忆体中断点(1000f4dc,) (1000f358)
debug->open run trace
view->run trace, 单击右键 log to file
设定该dll为non-system
(run/)trace into
(在waitforsingleobject呼叫时,按暂停再继续,以免被block
...
view->run trace, 单击右键 close log file
ctrl+F2
alt+x
修改机码HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\svchost.exe, 删除其Debugger值以免下次开机时正常进程被载入
移除该服务或设置为手动启动,以免下次开机时被载入
上述步骤中,前缀(表示视情况而定,*表示可能只需进行一次,中断设定位置依实际状况而有不同。

2009年3月4日 星期三

一个后门程序/服务EventService的反组译

此一后门程序的发现,起因于在system32目录下发现keylogger,将使用者按键纪录于檔案中且约每分钟存檔一次。三个檔案中,两个由于为EXE檔形式,立刻可以由杀毒软件清除。另一个较为顽强,经sysinternals下载的Filemon.exe发现竟是由svchost写入,记下其pid,经sysinternals下载的Procmon.exe了解其行为,一直不断写入 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventService ,甚至还有这么一段叙述:
"Description"="使 Internet 的文件能被基于 Windows 的程序创建、访问和修改。如果此服务被终止,将会失去这些功能。如果此服务被禁用,任何依赖它的服务将无法启动"
由于它写入 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventService\parameters] 中的资料漏了马脚,了解到真实的dll文件名称,上网查找发现没有什么有意义的资料,可能是随机编成,重启电脑进入保护模式,在此服务未启动的情况下加以删除。
此一由svchost调用的服务,姑且称之为abcdef.ghi,以ida pro开启。由于是个服务,故选dll模式

其exports画面如下

以servicemain及svchost为关键字查找,发现 http://www.3800hk.com/news/w44/136568.html 一文的说明,发现其描述符合观察到的行为。

那么svchost如何知道某一服务是由哪个动态链接库负责呢?这不是由服务的可执行程序路径中的参数部分提供的,而是服务在注册表中的参数设置的,注册表中服务下边有一个Parameters子键其中的ServiceDll表明该服务由哪个动态链接库负责。并且所有这些服务动态链接库都必须要导出一个ServiceMain()函数,用来处理服务任务。

2009年1月13日 星期二

【轉載】技術文件--破解技術文件(1) 嘸蝦米輸入法

看板 Hacker 精華區
http://bbs.cmu.edu.tw/gem?Hacker

技術文件
http://bbs.cmu.edu.tw/gem?Hacker&F00009PH

其中的程序都是以SoftICE為例,目前可能已不適用於xp作業系統,不過思路大體正確。

這篇"破解技術文件(1) 嘸蝦米輸入法 5.5e 版"指明了,輸入法的程式就在ime檔中。

原文中有段計算日期並比較的邏輯,當年的版本是2000年到期,16進位表示為7D0,little endian表示法為D007;如果是x年到期,16進位表示為y,little endian表示法為z,則使用ultraedit找出所有z出現的地方改個大一點的數字應該就可以了。

程序上要記得先解除安裝,以免ime檔被鎖住不能修改,修改的地方有4個,存檔後再安裝即可。


2009年1月9日 星期五