Legalパソコン教室♪

パソコン教室です。

3DSCTFに参加した

Malware問3問だけ正解できました。

1問目:Ronsomeware

マルウェアからの攻撃はExitWIndowExでPCを再起動を仕掛けられるというものです。

まずこの処理をバイナリエディタでパッチを当てて無害化します。

 

f:id:LegalSystems:20171218112528p:plain

処理を読み解くと"32 35 30 33 31 39 37 39"ASCIIコードで"25031979"がkeyであると分かる。

更にmocoh\flag.mocohに書き込みをしてるので同名のファイルを置いておくとflagが書き込まれる。

 

 

2問目:IRC Bot Takeover

 

3問目:W32.killah

このマルウェアは実行するとPCが起動しなくなるので非常に注意。

・ExitWIndowsExの処理にパッチを当てて再起動を無効化

・先頭2byteを"EB FE"に書き換えて無限ループでexeが初期処理で止まるようにする。

IDAで処理を読み解くと文字列"sトモ;-t,7タ2s゚q"、"ウ゚ヲオ」ヒゥョヌ゚ヲオョ眇"

をそれぞれ2回以下の関数で復号化していることが分かる。

f:id:LegalSystems:20171218120742p:plain

 

CheatEngindeでAttachして以下のスクリプトを実行して復号化を行う。

 

[enable]
alloc(newmem,2048)
CREATETHREAD(newmem)

newmem:
mov al,[sample.exe+3222]
mov ecx,e
dec ecx
lea edx,[sample.exe+3223]
call sample.exe+11a9
mov al,[sample.exe+3221]
mov ecx,10
dec edx
lea edx,[sample.exe+3231]
call sample.exe+11a9
mov al,[sample.exe+3222]
mov edx,10
dec ecx
lea edx,[sample.exe+3231]
call sample.exe+11a9
mov al,[sample.exe+3221]
mov ecx,e
dec ecx
lea edx,[sample.exe+3223]
call sample.exe+11a9
ret
[disable]

f:id:LegalSystems:20171218122350p:plain

 メモリ上に現れたフラグが答え。

 

 

 

 

 

 

自プロセスにcrcを実装してみる

まずCRC32の例を探します。

c++ - Fast CRC algorithm? - Stack Overflow

次に自プロセスの場合アドレスを読み込む前に安全に読み取れるかどうか判定しなければなりません。

IsBadReadptr関数でも実装できますが、現在は推奨されてないようなのでこれ

も代替案を探します。

Perfect imprecision, thoughts on memory leaks, performance profiling, code coverage, deadlock detection and flow tracing » C++

 

実装例

CRC32 OwnProcess · GitHub

adbを使ってAndroid端末を最速でタップする

通常の手法が遅い理由とその改良点等

KMC Staff Blog:Androidのadbのメモ(3) adbのログ

adbを使ってAndroid端末の画面操作をしたときのメモ - totorajの開発日記

 

手法.1

予めバイナリファイルを編集してadbでpush。

その後ddで流し込むというやり方。

Adb SuperFastTap · GitHub

 

手法.2

手法1を更に改良したやり方。

adb pushの時間を短縮するため、ファイルのアドレスを特定してWriteProcessMemoryでファイルを直接書き換えてddで流し込む。