hiding

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

More Related Content

What's hot(20)

CouchDB JP & BigCouchCouchDB JP & BigCouch
CouchDB JP & BigCouch
Yohei Sasaki1.8K views
20120913 nosql@hikarie(okuyama fuse)20120913 nosql@hikarie(okuyama fuse)
20120913 nosql@hikarie(okuyama fuse)
Takahiro Iwase1.8K views
月間10億pvを支えるmongo db月間10億pvを支えるmongo db
月間10億pvを支えるmongo db
Yuji Isobe20.6K views
R以外の研究ツールR以外の研究ツール
R以外の研究ツール
弘毅 露崎1.9K views
MongoDBの使い方MongoDBの使い方
MongoDBの使い方
Tatsuto Maetsu3.2K views
Redis Intro Osc2010 Tokyo SpringRedis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo Spring
Makoto Ohnami712 views
Mongodb 紹介Mongodb 紹介
Mongodb 紹介
Ryo Matsumura1.1K views
3-13-1
3-1
Atsushi Hara591 views
Yapcasia2012 ltthonYapcasia2012 ltthon
Yapcasia2012 ltthon
turugina4.3K views
DeclarativeSqlDeclarativeSql
DeclarativeSql
Takaaki Suzuki6.4K views
VeeamとN2WS ― 外部リポジトリの活用VeeamとN2WS ― 外部リポジトリの活用
VeeamとN2WS ― 外部リポジトリの活用
株式会社クライム114 views

hiding