如何黑一個黑客
最近,在搜檢垃圾信息時,我偶然看到了這樣一個很普通的郵件。它使用了一個很簡單的編造八卦的伎倆,推測奧巴馬的性取向,并提供了一個指向一個證明圖片的鏈接。
這條垃圾信息沒有什么特別的,但鏈接指向的這個具有雙重后綴的,叫做“you.jpg.exe”的文件卻有點研究價值。出于好奇,我把這個文件下載下來,檢查它會干些什么事。
我首先做的是看看這個文件真正的文件類型。很顯然,它不是一個關于奧巴馬的圖片,而是一個可以自解壓的RAR文件。
通過RAR提取工具,我打開了這個自解壓文件,看到了里面的內容。
解壓了“you.jpg.exe”,檢查里面的每一個文件,但發現它們都是經過加密的。于是,我在測試機上直接運行了“you.jpg.exe”,看看會有什么事情發生。雙擊它后,下面的這個圖片跳了出來。嘿嘿,果然不是奧巴馬。
在后臺,下列文件被自動安裝到了Windows System32目錄下:
- bpk.dat
- bpk.exe
- bpkhk.dll
- bpkr.exe
- inst.dat
- pk.bin
而且,在注冊表里創建了一個自動運行的autorun命令:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run bpk = <%windir%\System32\bpk.exe>
我在谷歌上搜索這些文件名稱,找到了一些有用的信息,測試機上被安裝的這些文件是一種鍵盤監控程序,特別之處是,這是一款商業版的軟件,來自 Blazing Tools公司,叫做Perfect Keylogger (PK)。這款鍵盤監控軟件可以通過正常的渠道購買和合法的使用,公開宣傳功用是監控孩子或員工的上網行為,等等。你可以想象,它同樣可以拿來做壞事。
我的分析到這兒差不多準備結束了。但幾分鐘后,有趣的事情出現了。監控軟件連接上了一個遠程的FTP服務器,這樣我就有了機會捕獲這個入侵者的FTP帳戶信息了。
通過攔截到的用戶名和密碼,我登入了這個FTP服務器,發現了大量的存放有監控日志和受害人桌面屏幕截屏的文件夾。從這些數目眾多的日志就可以看出,這個垃圾信息制造者的一條八卦信息的伎倆是多么的有效。
下面是這個FTP服務器的注冊信息:
我還不想就這么結束,我對這個監控軟件的安裝程序做了更進一步的研究,我希望能找到這個竊聽事件的幕后人物。
從這個軟件的網上幫助頁面上的信息中得知,這個程序有一個快捷鍵能把隱藏著的管理員控制界面或系統托盤圖標調出來。缺省的快捷鍵是組合的 CTRL+ALT+L,但我試了一下,不好使。于是我使用暴力方式嘗試各種鍵組合,終于讓我找到了正確的按鍵。但令人沮喪的是,出現的是下面的窗口:
在打算反編譯這款軟件、破解它的密碼前,我在網上搜索了一下,發現了一些提示。我找到了Chris Pogue的個人博客, 他很巧是在Trustwave SpiderLabs的一位同事,之前也碰到過這種軟件。在他的博客里,他指出密碼和一些其它配置屬性都存放在一個叫做PK.BIN的加密文件里,監視數 據存放在一個叫BPK.DAT的加密文件里。他還說,這些文件可以通過簡單的對字節進行和0xAA的XOR運算破解。
我猜測Chris分析的是一個老版本的,因為對0xAA進行XOR并不能解碼配置文件。然而,從轉換的BPK.DAT文件里可以看出,這種XOR操作還是部分的有效的,為了讓轉碼的效果更好看,我使用了雙字節0xAA, 0×00進行XOR操作:
我更感興趣的是PK.BIN這個文件,因為里面存放著這款軟件的詳細配置信息,其中可能包含這個軟件入侵者的信息。可這需要更多的工作,因為很顯然,簡單的與0xAA進行XOR操作是不能解碼的。所有我猜測很可能需要另外一個不一樣的XOR值。
以文本模式查看這個文件是下面這個樣子,注意看那些很多重復的片段!
在十六進制模式中,我取出這些重復出現的字符,把它們進行XOR運算:
通過一些python腳本,使我破譯了這個文件:
if len(sys.argv) > 1: pkhandle = open(sys.argv[1],'rb') pkbuffer = pkhandle.read() pkhandle.close() key=[0x0D,0x0A,0x08,0x05,0x01,0x02,0x06,0x03,0x03,0x0E,0x01,0x08,0x03,0x0C,0x09,0x07,0x05,0x0D,0x0C,0x0B,0x03] dec = '' ctr = 0 for i in range(11,len(pkbuffer)): a= ord(pkbuffer[i]) b =key[ctr%len(key)] x = a^b dec = dec+(chr(x)) ctr+=1 dechandle = open('pk.dec','wb') dechandle.write(dec) dechandle.close()
瞧!(提示:我涂掉了一些細節,以保護FTP服務器上的受害人的信息不外泄)
解碼后的PK.BIN文件向我展示了足夠的信息讓我能進入管理員控制面板,包括這款軟件的管理員密碼,FTP服務器密碼,軟件的購買許可證注冊姓名和注冊號。我輸入管理員密碼,很好用,里面我看到了入侵者要竊取哪些信息,以及更多的關于軟件的配置信息。
在配置文件里,軟件許可證的注冊姓名是Charles Onuigbo。
現在,我不確定Charles Onuigbo就是這個入侵者,或真有其人。唯一值得一提的是,這是個在尼日利亞——垃圾郵件制造之國——一個非常常見的名稱!
我用郵件向ISP舉報了這個FTP站點,希望這個站點能夠盡快的被關閉。
更新:我收到了管理這臺服務器的公司的一份郵件,里面寫到:
"你好- 不知道我的同事是否就此事給你回復過。 我們已經禁止了你所說的這個帳號對這個服務器 的訪問權限... "
我再次嘗試登錄這個FTP服務器,確認這個惡意的FTP帳號已經被封掉了。感謝Liquid Web公司的Alex Kwiecinski和你們團隊行動的這么迅速。
[本文英文原文鏈接:Pwning a Spammer's Keylogger ]
本文轉載自: 外刊IT評論 http://www.aqee.net/