Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

hiding

821 views

Published on

  • Login to see the comments

  • Be the first to like this

hiding

  1. 1. 隠す こおしいず 1TSG LT大会 2015/07/02
  2. 2. $ whoami Cookies a.k.a. こおしいず / くうきいず / き / こ @cookies146 . seccamp 2012 SW組 a member of CTF team wasamusume Windows上で生きてきたのでWindowsの話しかできない 2
  3. 3. ファイル隠蔽 それは、ロマン。 別に隠したいファイルがあるわけじゃあない。 3
  4. 4. 隠し属性 ♪~ 4
  5. 5. 隠し属性 あ! 5
  6. 6. > attrib +s +h [file] 隠し属性 + システム属性 間違いなくビビる。 6
  7. 7. 「特殊フォルダ」 昔よりアクセスが煩雑になったっぽい。 Vistaはもっと楽だった。 .{20D04FE0-3AEA-1069-A2D8-08002B30309D} 7
  8. 8. 代替データストリーム 何に使うんだろう。 8
  9. 9. ここから本題。 るーときっとってなんかかっこいいよね(笑) 9
  10. 10. N年前 10
  11. 11. Process A IAT Call FFF *K!FFF Kernel32.dll FindFirstFile(…) { …; } これを… 11
  12. 12. Process A rootkit IAT Call FFF *H!FFF Kernel32.dll FindFirstFile(…) { …; } Hook.dll hook_FFF(…) { …; FindFirstFile(…); …; } こう! 12
  13. 13. 反省 僕はなんにもしてない。 ネットにめっちゃきれいなライブラリ。 explorer.exeから丸見え あいつFindFirstFileを呼んでない。 13
  14. 14. ということで 全部自力で書こう。 機械語送りつけたい。 うわ、explorer.exeって64bitアプリか・・・ 14
  15. 15. explorer.exe 一般に 自分 → Windows API → NTDLL.dll → Kernel ってなってる。 FindFirstFileW 15
  16. 16. FindFirstFileW explorer.exe 一般に 自分 → Windows API → NTDLL.dll → Kernel ってなってる。 FindFirstFileW FindFirstFileW sub rsp, 38 and dword ptr ss:[rsp+28],0 and qword ptr ss:[rsp+20],0 mov r8,rdx xor edx,edx xor r9d,r9d call FindFirstFileExW add rsp,38 ret FindFirstFileExW push ebp push rbx push rsi ... mov dword ptr ss:[rsp+28],4021 mov qword ptr ss:[rsp-28],rax mov qword ptr ss:[rbp-18],r11 mov qword ptr ss:[rbp-10],r11 mov qword ptr ss:[rsp+20],7 call ntdll!NtOpenFile ... call ntdll!ZwQueryDirectoryFile ... call ntdll!RtlReleaseRelativeName ... ZwQueryDirectoryFile mov r10,rcx mov eax,34 syscall ret 16
  17. 17. explorer.exe ZwQueryDirectoryFileを呼んでた。 呼び出し元はよくわかんないところ。shell32.dll。 17
  18. 18. 方法 適当にZwQueryDirectoryFileの結果改竄アセンブリを書く。 適当にShell32.dllのIATを書き換えるアセンブリを書く。 適当にexplorer.exe上にメモリを確保して機械語を書き込む。 適当にCreateRemoteThreadする。 18
  19. 19. 方法 適当にZwQueryDirectoryFileの結果改竄アセンブリを書く。 適当にShell32.dllのIATを書き換えるアセンブリを書く。 適当にexplorer.exe上にメモリを確保して機械語を書き込む。 適当にCreateRemoteThreadする。 19
  20. 20. 方法 適当にZwQueryDirectoryFileの結果改竄アセンブリを書く。 適当にShell32.dllのIATを書き換えるアセンブリを書く。 適当にexplorer.exe上にメモリを確保して機械語を書き込む。 適当にCreateRemoteThreadする。 20
  21. 21. 方法 適当にZwQueryDirectoryFileの結果改竄アセンブリを書く。 適当にShell32.dllのIATを書き換えるアセンブリを書く。 適当にexplorer.exe上にメモリを確保して機械語を書き込む。 適当にCreateRemoteThreadする。 21
  22. 22. 方法 適当にZwQueryDirectoryFileの結果改竄アセンブリを書く。 適当にShell32.dllのIATを書き換えるアセンブリを書く。 適当にexplorer.exe上にメモリを確保して機械語を書き込む。 適当にCreateRemoteThreadする。 完成したのは今日の2:00 22
  23. 23. デモ ‘hid3’という文字列が含まれているものをファイル一覧から外す 23
  24. 24. でも IATが書き換えられていることは火を見るよりも明らか。 いろいろ雑。とくにアセンブリ。 24
  25. 25. いつか Windowsのデバイスドライバとか書きたい。 Ring 0で遊びたい。 25
  26. 26. END 26

×