發表文章

從Python Installer打包程式拖出Python程式碼

圖片
卡關T__T 登愣,之前卡關很久的FireEye的Python題目 根據Icon可以大概推知這支Python程式透過Python Installer來打包(畢竟Python能打包成.exe的工具不多XD)後來得知有個開源工具可以替我們撈出Source Code: PyInstaller Extractor(後來查了一下這套工具在國外好像蠻有名的 可以看此篇 Unpacking Pyinstaller Packed Python Malware ) 那麼工具載點在這裡: PyInstaller Extractor Source ,載回來後可以得到一個PyInstxtractor.py 底下紀錄如何操作這套.py工具 手術台 今天你獲得了一個Python Installer包裝好的程式(這邊拿的是Fire Eye的flare-on題目第三題 elfie.exe)那要怎麼透過PyInstxtractor.py替我們撈出Source呢? 只要看到以上字串就表示解析成功了,接著回到你的執行目錄之下可以看到: 會看到在目錄之下會產生很多從這個elfie.exe解析出來的區段文件,其他基本上都是包入的runtime,比較重要的是跟程式同名的文件(如在此篇解析出來就會是elfie)打開來看看 打開此文件後可以看到它其實是個Python腳本,不過你會看到相當大量的莫名其妙的Base64的Code,最後底下Import base64在做exec(base64.b64decode(...一堆base64...)),尾巴會有個NUL。 這裏我們可以得知這隻打包好的程式被跑起來時,Script會把透過exec()來執行Python的程式碼執行起來,在此我們可以看到被執行的程式碼其實也就是base64.b64decode(...一堆base64...)這段了,所以我們只要設法把這段程式碼Print出來就可以了。 所以我們可以手動修改一下這段程式碼,把底下NUL的部分刪掉,然後把exec()改成Print() 然後我們再回到終端機下把這個elfie文件當作Python Script跑起來看看: 接著到執行目錄下看看Code.txt:  就可以看到程式碼囉(不過上面那段Base64又是需要再做一次反轉,這層開...

OllyICE模糊秒爆WINAPI呼叫點小Trick

圖片
哪來的梗 這次要介紹的這個梗超級有趣der,這是我在AIS3聽課的時候覺得超有趣的梗興奮得不得不讓人發文紀錄一下XD。這個梗是AIS3的Day5 大可大神(膜拜一下)Demo怎麼速爆WIndows Office彈出過期訊息的視窗的手法。 那這是什麼梗呢,Office在檢測到沒有註冊的話,狀況會是這樣子的: if (Not Reggistered) { Show NagDialog(); // if you press CTRL + F9, after window close will return to here. } 可以知道Office會彈出一個類似NagDialog的物件顯示尚未註冊的訊息,但我們並不知道具體實作過程Call了哪些API、判斷條件、位置...等,就可以用這個Trick。 大可Demo用OllyICE開啟了Office並且等它彈出提示尚未授權的視窗,接著回到OllyICE按下暫停,此時可以明顯見到位置跳轉到一個很奇怪的system call停住,接著狂按 (Ctrl + F9) * N次(執行返回)最後按下F9(執行)後就會看到OllyICE直接幫你斷點斷在API呼叫點上了。 蛤?為什麼我用純文字形容?因為AIS3現場課程是不准攝影拍照der...Q____Q 不過為了重現生動的追蹤手法,於是我用C++Builder實驗了一下這個Trick怎麼利用的XD 實際手法利用 既然是要彈跳出一個視窗體,那麼我就用惡名昭彰的MessageBoxA()來做測試了XD 不過這個Trick部分情況其實是有問題的(稍後會提到)那這邊我在窗體上寫了兩個按鈕,上方會呼叫原生WINAPI的MessageBoxA彈出訊息,而下方按鈕則是呼叫C++Builder的runtime自己實作的消息視窗(底層不走MessageBoxA) 實驗 首先用OllyICE將軟體掛載起來,接著按下MessageBoxA的按鈕此時軟體透過MessageBoxA彈出窗體顯示文字,這時候我們回OllyICE上按下暫停鍵。 這時候OllyICE幫你把線程暫停然後把該線程斷點在一個很奇怪的位置(這位置用Cheat Engine查了一下是KiUserCallbackDispatcher的return上)接著Ct...

HITCON ENT 惡意軟體新型API呼叫行為實作(Patten式GetProcAddress找碴呼叫API)

圖片
動機 這次HITCON Enterprise正好坐在R0場有幸聽到PK大神講的議程XD。不過本來想聽這場是想知道實際Google Drive C2 API呼叫過程的Olly分析,不過似乎整場議程重點不放在那Otz... 但正好聽到一件有趣的事情,議程內提到新型惡意軟體呼叫不再像以前是用GetProcAddress,而是自幹了一個叫做GetProcAddressEx呼叫方式會像是: GetProcAddressEx( ModuleBase, "0=L;3=d;4=L;11=A"); //找尋一個API根據函數名,第0個為L、第3個為d、第4個為L、第11個為A 這手法聽起來像是在逃避正常靜態分析軟體(如IDA Pro)可以很容易根據Import Address Table得知呼叫過程或者透過對GetProcessAddress下斷點動態反查API過程,所以我想這個GetProcAddressEx內部應該: 不該使用到任何API來增加分析難度 暴力分析DLL模組結構體找碴外導函數 暴力列舉API過程中根據Pattern(也就是0=L;3=d...)找到第一筆合適的API名 根據這個原則,於是我開始實做惹XD Visual C++實作 關於這種奇怪的要求,想到之前有研究過類似的發文 [Windows][PE][ASM]純組語手幹Dll Header解析外導函數表撈出函數地址(如LoadLibraryA動態地址) 索性我就拿這個的部分Code來改成VC++函數版本了XD 首先Pattern檢測部份,我寫了一支簡單的函數 int StrVal(std::string Data) { return std::stoi(Data); } bool ChkPatten(char* Str, char* Patten) { bool retn = true; std::string n = ""; for (int i = 0; Patten[i]; i++) { if (*(char*)(Patten + i) == '=') { int LPos = StrVal(n); char RChar = *(char*)(Patten + i + 1);...

HITCONxTDOH 闖關活動逆向題目Source開源啦

圖片
當初會寫這個有趣的題目裡面是正好想提到IDA Pro的一些小小手花技巧,正好可以接上 HITCON CMT 2015 手花詐欺IDA Pro的一些小手段 (IDA ProHex-Rays DecompilerSimple Tricks) 的議程XD Source Code連結:https://github.com/aaaddress1/HITCONxTDoH-2015-Crypto-Game

HITCON CMT 2015 手花詐欺IDA Pro的一些小手段 (IDA ProHex-Rays DecompilerSimple Tricks)

這篇跟 HITCON CMT 2015 AIDS (Automatic Intelligence De-advertisement Scheme) 是同一天的HITCON議程,不過是在社群場講的XD 想想還是一起Share出來了

HITCON CMT 2015 AIDS (Automatic Intelligence De-advertisement Scheme)

圖片
其他延伸相關:   HITCON CMT 2015 手花詐欺IDA Pro的一些小手段 HITCONxTDOH 闖關活動逆向題目Source開源啦 這次真的很興奮啊!歷年來都是以會眾身份坐在底下,第一次有幸站在這麼大的議程上分享一些內容(而且分享的內容不是很屌很屌的東西,真心覺得是僥倖才能上啊...) 比較難過的是這場Talk跟HITCON Girls撞場啦Q__Q 一堆人跑去聽HITCON Girls,果然帶靶先輸一半了T^T 一定要的自我介紹啊! 最後就是當然要幫莫風徵男友(?)  最後附上當天Demo的兩個影片 希望未來還有機會投稿上啊! :P (雖然感覺應該很難啦...)

[CTF] AIS3 Write-Up

圖片
這份write-up寫好放著好久了,一直忘記發佈出來XD 最近在整理文章熊熊才想到... 大神們請飄過Q__Q MISC1 嘗試送出你的第一把 KEY The key is AIS3{hello_world} 直接送出KEY MISC2 雖然facebook.zip有加密,但是可觀看到內含資料夾/p960x960/下有一個圖片檔案的檔名為851556_443281069111871_602278786_n.png,透過Google搜索後, 可以在Github頁面: https://github.com/nicksahler/FacebookStickers/blob/master/test.html 中找到相關於此檔名的圖片網址為: https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-prn1/p960x960/851556_443281069111871_602278786_n.png 接著將此圖片下載後,自行包成ZIP壓縮包(這裡命名為my_zip.zip)利用知名工具PKCrack,Linux中下命令pkcrack -d o.zip -P my_zip.zip -c "p960x960/851556_443281069111871_602278786_n.png" -C facebook.zip  -p 851556_443281069111871_602278786_n.png 最後產出o.zip解壓縮後就可以觀看到內含的文字檔案內的key了 MISC3 把檔案c4載下來後,用file查看得知為gzip檔案然後下gzip後會變成c4.gzip在解壓縮開(重複兩次後)c4會變成bitmap的檔案,點閱開來後就可以看到KEY: 如上圖所示就會出現Key WEB1 題目給的網站 http://52.69.163.194/web1/ 內有兩個連結about跟test, 點擊test會連到 http://52.69.163.194/web1/?page=test 點擊about會連到 http://52.69.163.194/web1/?page=about 查詢Stack Overflow可以得知漏...