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月24日 星期二

财务数学书单

http://finmath.com/Chicago/FMSeminar/BookshelfTextOnly.html

2009年3月22日 星期日

手工查找木马(二)

经过使用ida pro及ollydbg对病毒进行逆向工程,发现其行为与之前使用procmon所录制的log相符,服务启动后会进行de-obsfucation,以还原关键的字串,连向某动态解析之位置*.3322.org

连线建立完成后,根据所接收到的信息,此一后门程式可以下载其它木马,以系统帐号执行任何指令,回传系统详细信息等等。

令人担心的是,此木马在运行中躲过了kaspersky的检查,在服务被停止后,kaspersky才得以发现并删除此一木马。程式虽然只有40k大小,但是功能已经相当完整,如果接下来有时间,还是要好好研究一下才是。

另一方面,卡巴在找到此木马后的第一反应是删除此檔案,不禁另人怀疑木马作者和防毒软体业者间微妙的共生关系。檔案中含有木马作者留下的线索,可以用来查缉其来源,但是防毒软体业者的生意是否也因者木马的盛行而兴隆?因此防毒软体业者当然不希望木马作者被抓到。甚至在某些案例中,某些防毒软体业者本身也被控蓄意散播病毒。

2009年3月14日 星期六

手工查找木马

因為解毒後又出現奇怪的檔案,甚至有被執行的跡象,因此上網查找了一下,發現這個icesword評價不錯,可惜作者很久沒更新的樣子,滿可惜的.

執行後發現一個網路連結經常存在,由procmon檢視該進程為svchost -k krnlsrvc之參數,於機碼中發現此一木馬所在,進行以下步驟:
  1. 複製此木馬,以備留存證據.因為此機器為動態IP上網,顯然它是向遠端連結,連結之IP必然留存在本機上.這一步先作,因卡巴顯然在先前漏了這個木馬,但我停止進程後在檢視該檔案時又報有毒並馬上被刪除,可能是它有方法隱身於卡巴,詳情得等對此木馬進行逆向工程後才能得知.複製時建議更名,在某些觀察下發現,它似乎有辦法記得它被隔離的位址,重開機進入安全模式可能是比較安全的作法
  2. 以procmon停止該進程,或重開機進入安全模式
  3. 刪除這個木馬,及帶起這個服務的機碼
以krnlsrvc此一關鍵字搜尋,發現http://www.qqcnzx.cn/thread-226-1-1.html中有一文出現類似的“手工查找木马“動作,觀念滿一致的.比較一般的觀察技巧,我想可以看看system32這個目錄中,文件的屬性,如果包含了H,大小不小於50K,名稱無規則,日期與大部分其它檔案都不同,即使是很早如2004年的日期,都要高度懷疑是木馬.

另外以procmon觀察此一進程的行為時,發現還一直向C:\WINDOWS\system32\drivers\etc\hosts 這個位置進行讀取,因此進到該目錄把兩個命名不正常的檔砍了.

2009年3月9日 星期一

机率与统计书单(三)

談到選擇權定價,隨機微積分及偏微分方程的關係,Duffy說得很簡潔扼要.“這些衍生性商品可以被建模為二階橢圓偏微分方程的初始邊界值問題.此偏微分方程包含了一個時間變數及一個或以上的空間變數”.

机率与统计书单(二)

继续上次的统计书目的讨论,大学所开名为统计学的上下学期6学分课程,其实包含了数学中机率论及统计学两个学门。统计中提到了很多的分配,但是其中在自然界发生的,只有常态、帕松及二项三种,其它都是”衍生”的分配,如Ft,卡方等,用来进行检定的计算。

在數學領域中,機率和統計是兩門非常獨立的學門,尤其機率和量子物理間有著相當密切的關聯,而統計和機率這兩個領域的作者並沒有重覆.如果為了計算選擇權的定價,那麼對機率的了解就已足夠了解隨機微積分;而如果是為了計量模式的建立及計算,才需要學習統計的部分.


如同Chung所言,统计学的进程是超前于相应的物理学的发展,因此二项分配由于实验简单,最早为人类所理解,并用以推导常态(p值一般)及帕松分配(p值很小)。对常态分配的推导来自于计算二项分配的需要,尤其是对阶乘的计算及近似,此一近似称为史得灵公式。


在第229页证明高斯分配时,Chung也说这个证明很聪明;231页说明单尾的近似时,也说这是一个不错的技巧。我相信这是打心理说的,因此也不也说明了机率的发展是不那么直观的,我甚至这么想,当年在修这门统计学的学生当中,到底有几位真正了解这个学科呢?

另一方面也讓人覺得大師不愧是大師,不論地位如何崇高,他還是能以欣賞的角度來評價前人的工作,也讓人覺得大師的地位是沒有大家想像的遙遠的.寫一本成功的教科書,要能以初學者的觀點,了解初學者的程度和識見,才不會讓初學者看不懂,但是仍然要能言之有物,也就是三個字,“講重點”.

http://www.math.ntu.edu.tw/student/book/book.htm

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年3月3日 星期二

机率与统计书单



http://www.math.ntu.edu.tw/student/book/book_probability.htm

http://www.math.ntu.edu.tw/student/book/book_statistic.htm

http://www.chiaoluo.cn/?q=node/112

http://episte.math.ntu.edu.tw/cgi/mathfield.pl?fld=pro

或许是为了在短时间内教完所要求的进度,或更可能地,为了适应现今大学生的(低落)水准,统计学在我之前所修的课程所使用的教本并没有太多的证明,而集中在应用,这显然使得对学门的了解流于强记,现在回想起来,当年成绩低下实在没什么意外,某种程度上我还满怀疑非数理学系的年轻教授对统计学的了解程度。光是Poisson process / distribution的三个假设,要把它说个清楚这么简单的事情,我不知道为何管院使用的教科书从未提及。(网页版)接下来比较一下Chung, Feller, Hogg&Craig这三本的风格。

就Chung这本而言,可以说是最详灵的,他先破题,然后讨论历史上的处理方式。Hogg & Craig使用其中一种方式说明,但是过程有点"跳tone"(还是我程度不好…)。Feller也使用了其中的另一种方式说明,他直接引用Poisson的思路,由二项分配的极限下手,是最好入手的,也很符合历史上的发展,我个人非常喜欢。