2003年7月1日 星期二

傾印執行檔 (dump2bin)

很久以前曾經看到一位很有名的 hacker - silvio 將 core 檔轉換成 ELF 執行檔(core2elf), 當時覺得非常有趣. 在 Un*x 的檔案權限限制裡, 如果我們將某個執行檔設為可執行卻不可讀寫, 那麼我們將無法讀取檔案內容, 也無法對該執行檔作正常的 gdb 動作.
對執行檔進行讀取和除錯其實是逆向工程或是系統安全裡的基本操作, 有些系統管理者或程式設計者太過信賴 Un*x 權限管理, 將過多的資訊保存在執行檔裡, 卻可能導至一些問題的發生.
這個程式 dump2bin.c 是我利用 Linux 提供的 ptrace 系統呼叫, 將執行檔內容傾印至指定的檔案.
例如: ./flags 原本是不可讀寫的執行檔, 但經過 dump2bin 轉換成 ./flags2 即可讀寫.
flags 的 file owner 可以為任何人, 只要可以執行的檔案都可轉換.

[tim@localhost hack]$ ls -al ./flags
---x--x--x 1 tim tim 11400 6月 23 17:21 ./flags*
[tim@localhost hack]$ ./dump2bin ./flags ./flags2
Ready to dump ./flags to ./flags2 ...
Child pid = 12183
Converted successfully!
[tim@localhost hack]$ ls -al ./flags2
-rwx------ 1 tim tim 11400 7月 1 01:01 ./flags2*
[tim@localhost hack]$ file ./flags2
./flags2: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped

沒有留言: