際際滷

際際滷Share a Scribd company logo
ステルスル`トキット
いヤツはどうラ?ブフォレンジックをすりiける?


                   Tsukasa Ooi <li@livegrid.org>
             Livegrid Incorporated, Lead Analyst
vBする並
? ラ?ブメモリフォレンジック
? ?ンチフォレンジック
? Rootkit
ラ?ブメモリフォレンジックとは?
? 嘛しているマシンのメモリを児に
  盾裂を佩うフォレンジック返隈
 C ^^ ̄のЪ
 C マルウェ?の碧
? 匯違には麗尖メモリのダンプにより_撹される
ラ?ブメモリフォレンジックのプロセス
1. 喘ツ`ルで麗尖メモリの坪否を函誼する
 a. ツ`ルが麗尖メモリをマップする
 b. マップした麗尖メモリの坪否をコピ`する
 c. コピ`した坪否を隠贋する
2. 麗尖メモリダンプをフォレンジックソフトウェ?に
   秘薦する
3. フォレンジックソフトウェ?で盾裂を佩う
 a. システムの坪否をダンプから痌する
 b. 痌したシステムの坪否を盾裂する
?ンチフォレンジックとは? (1)
? フォレンジック返隈により盾裂されることを
  契ぐ、もしくは里稜鵑鮟睥させる返隈
? 廣吭すべきは ^好蔦漾 だけではない!
 C 砿尖を毛れたい ^いヤツ ̄ が徭らのコンピュ`タに
   ?ンチフォレンジック返隈をm喘する栽がありうる!
?ンチフォレンジックとは? (2)
? ?ンチフォレンジック返隈が ^贋壓する ̄
  だけで吭龍がある
 C フォレンジックの佚m來が払われる
 C もはやハックする駅勣すらない
 C そのため、 ^^ ̄ があるにもvわらず
   《Vするということがあり誼る!
? つまり、フォレンジックは佚m來が凋である
ラ?ブメモリフォレンジックのプロセス
1. 喘ツ`ルで麗尖メモリの坪否を函誼する
 a. ツ`ルが麗尖メモリをマップする
 b. マップした麗尖メモリの坪否をコピ`する
         この何蛍をハックする!
 c. コピ`した坪否を隠贋する
2. 麗尖メモリダンプをフォレンジックソフトウェ?に
   秘薦する
3. フォレンジックソフトウェ?で盾裂を佩う
 a. システムの坪否をダンプから痌する
 b. 痌したシステムの坪否を盾裂する
Result was´

ROOTKIT がどこまでできる?
まずは ^講しい師h ̄ みたいに。
? EnCase
? WinEN
? FastDump
? dd, Forensic Acquisition Tools, win32dd,
  Memory DD´
? Windows 俚峭彜B (hiberfil.sys)
? Microsoft Windows クラッシュダンプ (*.dmp)
Fact (1):

ほとんどのフォレンジック秘薦から
音辛である
^なぜ ̄ そうなる?
? ペ`ジテ`ブルの\っ函り (Subverting)
 C Shadow Paging
? F壓のフォレンジックソフトウェ?の樋泣
ペ`ジテ`ブルとは? (1)
? 麗尖議なメモリレ??ウトと尖議な夛を
  蛍xするC
? CPU が?クセスする?ドレス (リニ??ドレス) を、
  麗尖議な?ドレスにQするためのテ`ブル
? 尖?ドレス腎gを、(児云議に 4KiB の)
  仝ペ`ジ々と柵ばれるI囃に蛍護して砿尖する
ペ`ジテ`ブルとは? (2)


                                 Chunk A

                  Page Table


                                 Chunk B




Physical Memory                Logical Space
ペ`ジテ`ブルとは? (3)
                 Linear       Physical
                 0x12345000   0x14fab000
                 0x12346000   0x0c812000
                 0x12347000   (Not Present)
                 0x12348000   0x215d9000
                 0x12349000   0x4991f000


Linear Address                                Physical Address
0x12346804                                    0x0c812804
ペ`ジテ`ブルとは? (4)
                 Linear       Physical
                 0x12345000   0x14fab000
                 0x12346000   0x0c812000
                 0x12347000   (Not Present)
                 0x12348000   0x215d9000
                 0x12349000   0x4991f000


Linear Address
0x12347804                                    ペ`ジフォルトk伏
ペ`ジテ`ブルとは? (5)
? ペ`ジフォルト (箭翌)
 C リニ??ドレスに鬉垢詢鐇?ドレスがない栽や、
   ペ`ジの?クセス崙囮に冽わない?クセスがあった栽に
   k伏する箭翌
 C IDT によって幣されるペ`ジフォルトハンドラによってI尖される
? ペ`ジの?クセス崙囮
 C   麗尖?ドレスが贋壓するか倦か (P bit) 參翌にも贋壓する
 C   きzみ辛嬬か倦か : R/W bit
 C   ?プリケ`ションからはiみき鋤峭か倦か : U/S bit
 C   ペ`ジのg佩が鋤峭されているか : NX bit
ペ`ジテ`ブルとは? (6)
? ペ`ジテ`ブルにvBするシステムレジスタがある
 C CR3
   ペ`ジテ`ブルへの麗尖?ドレスを峺協する
 C CR2
   ペ`ジフォルトがk伏したとき、そのフォルトを
   k伏させたリニ??ドレスが鯉{される
ペ`ジテ`ブルとは? (7)
? ペ`ジテ`ブルは、メモリ砿尖において
  Oめて嶷勣な夛悶である
? rootkit にとっても´
What rootkit do:

ペ`ジテ`ブルの崙囮をZう
Shadow Paging (1)
?   云栖は、∀觧においてゲスト OS の
    メモリ腎gを∀觧する返隈の匯つ
?   ペ`ジテ`ブルの}uを恬撹し、
    頭圭に伏じた筝をもう頭圭へ郡啌する
?   云栖は、CPU の∀觧屶址C嬬にmらなければ
    Shadow Paging をg佩することができない
^宥械の ̄ Shadow Paging (1)
 ? OS のペ`ジテ`ブルをきzみ鋤峭にする
 ? ペ`ジテ`ブルきQえをペ`ジフォルトで奮し、
   輝する荷恬に鬉垢覯掀を Shadow Page Table
   にして佩う。

Linear       Physical                  Linear       Physical (Virtualized)    Physical (Real)
0x12345000   0x14fab000                0x12345000   0x14fab000                0x24f03000
0x12346000   0x0c812000                0x12346000   0x0c812000                0x12580000
0x12347000   0x44ab1000 ★ 0x31442000   0x12347000   0x44ab1000 ★ 0x31442000   0x1dabc000 ★ 0x4d3f2000
0x12348000   0x215d9000                0x12348000   0x215d9000                0x379df000
0x12349000   0x4991f000                0x12349000   0x4991f000                0x0732f000


 (Virtualized) Page Table                           Shadow (Real) Page Table
^宥械の ̄ Shadow Paging (2)
? ^宥械は ̄ きQえたペ`ジテ`ブルと Shadow が
  揖じ吭龍になるように鬉垢きQえを佩う

                デ`タ



 Page Table               Shadow Page Table
Shadow Paging (2)
?   ところが、匯協訳周を困燭擦
    Shadow Paging をg廾することができる。
    C   CR0.WP bit が械に 1 であること
    C   CR3 の筝は OS の屡岑のw侭でのみ佩われること
    C   ペ`ジフォルトハンドラをフックできること
    C   (その麿謹方あるが福待)
?   宥械の訳周においては、ほとんどの OS が
    これらの訳周を困燭 (Windows, Linux など)
ペ`ジテ`ブルの崙囮をZう!
1. ペ`ジフォルトハンドラを徭らの
   (rootkit の) ものにセットする
2. OS から歌孚するペ`ジテ`ブルとはeの
   (rootkit のための) ペ`ジテ`ブルを恬撹し、
   Shadow Paging をg佩する
3. remapping されるメモリI囃の臨阿鯰个
^宥械の ̄ Shadow Paging (2)
? ^宥械は ̄ きQえたペ`ジテ`ブルと Shadow が
  揖じ吭龍になるように鬉垢きQえを佩う

                デ`タ



 Page Table               Shadow Page Table
^吭ある ̄ Shadow Paging (1)
? 吭ある Shadow Paging においては、
  蒙協の (吭ある) デ`タへのマッピングを個Zする

               吭あるデ`タ



 Page Table                Shadow Page Table
              個Zする!


               吭なきデ`タ
^吭ある ̄ Shadow Paging (2)
? ペ`ジテ`ブルのきQえをOする
? きQえられたH、肝の並をチェックする
  C 麗尖?ドレスが、吭ある (個Zされた)
    デ`タまたはコ`ドであること
  C 鬉垢襯螢??ドレスが、吭あるデ`タまたはコ`ドが
    云栖贋壓するべきリニ??ドレス ^ではない ̄ こと
? この 2 訳周を困燭栽、 rootkit は
  鬉垢襯擧`ジテ`ブルへのマッピングを個Zする
^吭ある ̄ Shadow Paging (3)

 Address A     吭あるデ`タ     Address A
云栖の?ドレス




               吭なきデ`タ
^吭ある ̄ Shadow Paging (3)

 Address A            吭あるデ`タ                Address A
云栖の?ドレス



 Address B                                   Address B
フォレンジックソフトが   Shadow Paging がなかったり、
マップする         吭なき Shadow Paging ではこうなるはず。
仟しい?ドレス

                      吭なきデ`タ
^吭ある ̄ Shadow Paging (3)

 Address A         吭あるデ`タ   Address A
云栖の?ドレス



 Address B                   Address B
フォレンジックソフトが   このようなマッピングを
マップする            リダ?レクトする!
仟しい?ドレス

                   吭なきデ`タ
^吭ある ̄ Shadow Paging (4)
? 箭のようなe?ドレスへのマッピングは、
  ほとんどのフォレンジックソフトウェ?が
  佩っていることと畠く揖じである
  C それだけではなく、クラッシュダンプやハ?バネ`ション
    フ??ルの伏撹rにも揖のことが佩われる
? Y惚として、ほとんどのフォレンジックソフトウェ?や
  Windows のダンプする侘塀からは音辛となる!
? また、淋譴任るメモリは ^ほとんど畠て ̄ である
フォレンジックソフトウェ?の樋泣 (1)
? rootkit が ^贋壓できる ̄ コンテキストの嶄で
  麗尖メモリの函誼を佩っていること
 C 麗尖メモリ嶄にペ`ジフォルトがk伏しうる
 C (A半の辛嬬來がある) OS のC嬬を佚喘してしまっている
? それ參翌にもある!
フォレンジックソフトウェ?の樋泣 (2)
? ?Device?PhysicalMemory を旋喘している
  フォレンジックソフトウェ?が謹い
  C 3 定念に?ンチフォレンジックg廾が
    恬られているにもvわらず!
   (DDefy : http://www.slideshare.net/amiable_indian/antiforensic-rootkits)
  C EnCase, FastDump を根めた謹方のソフトウェ?が
    このデバ?スを麗尖メモリの函誼に喘いている
? このデバ?スがg匯嬾墾泣となりうる
  C もっとgにこのデバ?スのみをフックすることで
    書指の rootkit 殻ではないものの、かなりの
    斌喘ソフトウェ?を遁くことができる。
Fact (2):

F壓のフォレンジックソフトウェ?を
ROOTKIT 奮に聞ってはならない
F壓のソフトウェ?だけでIする圭隈 (1)
? rootkit 奮にはロ`カルで嘛する喘
  ソフトウェ?を喘いる (GMER, Rootkit Unhooker´)
  C gは、ロ`カルで奮する泙蠅任
    奮がyしいの rootkit ではない
  C 貧ソフトウェ?を旋喘することで、rootkit が
    聞喘しているフックを奮し、栽によっては屎できる
? フォレンジック秘薦を佚喘しない
F壓のソフトウェ?だけでIする圭隈 (2)
? しかし、これは屏隈でしかない
 C rootkit が?ンスト`ルされているHには
   フォレンジック秘薦が畠く佚mできないことには
   笋錣蠅ない
? ツ`ルのg廾を個措して rootkit に森できる?
                       ´YES
Anti-Anti-Forensics:

ROOTKIT に森して
佚mできる麗尖メモリを函誼する
參念のスラ?ドを房い竃そう´
Previous 際際滷 : Shadow Paging (2)
?   ところが、匯協訳周を困燭擦
    Shadow Paging をg廾することができる。
    C   CR0.WP bit が械に 1 であること
    C   CR3 の筝は OS の屡岑のw侭でのみ佩われること
    C   ペ`ジフォルトハンドラをフックできること
    C   (その麿謹方あるが福待)
?   宥械の訳周においては、ほとんどの OS が
    これらの訳周を困燭 (Windows, Linux など)
森する圭隈 (1)
? Shadow Paging が卆贋している念戻を雲す
 C CR0.WP bit を 0 にする
 C CR3 (ペ`ジテ`ブルへのポ?ンタ) を徭ら筝する
 C ペ`ジフォルトハンドラを徭らの崙囮和に崔く
? この圭隈が恷もgで森が互い!
森する圭隈 (2)
   CR3




  Shadow
              Page Table
 Page Table
森する圭隈 (2)
   CR3




  Shadow                     Own
              Page Table
 Page Table                Page Table
森する圭隈 (3)
? 畠ての護りzみ (箭翌根む) をフックするため、
  LIDT 凋綜をg佩し護りzみベクトルを筝する
? 徭らペ`ジテ`ブルを恬撹する
? そのペ`ジテ`ブルへの麗尖?ドレスを
  CR3 レジスタにO協し、麗尖メモリを函誼する

? まだ}はあるものの、
  佚mできる麗尖メモリを函誼することができる。
火る (が蒙にIする駅勣はない) } (1)
? rootkit の崙囮和においては、リニ??ドレスに
  鬉垢誥しい麗尖?ドレスを誼る圭隈はない!
 C 冱いかえれば、仟しく恬撹したペ`ジテ`ブルが
   屎械かどうかは編^することができない
 C rootkit はまだ、ペ`ジテ`ブルの
   恬撹を形墾することが尖貧辛嬬である
   ? 箭えば、仟しいペ`ジテ`ブルに崔きQえようとした鵬gに
     コンピュ`タをリセットするような好弔まだ辛嬬である。
火る (が蒙にIする駅勣はない) } (2)
? しかし、個措したg廾を喘いた栽、
  旋喘宀に櫃鼎れず麗尖メモリの坪否だけを
  遁くことはほぼ音辛嬬である。
 C コンピュ`タをリセットするなどの好弔録苗椶世、
   それでは旋喘宀に櫃鼎れてしまう。
Consideration about these rootkits

ROOTKIT についての深賀
rootkit についての深賀 (1)
? PoC においては Intel x86 + Windows 鬚韻
  g廾を佩ったが、尖そのものは
  クロスプラットフォ`ムである
  C x86 ?`キテクチャ貧のeのオペレ`テ?ングシステム
    ? Linux, Mac OS X´
  C x86_64 ?`キテクチャ
  C その麿かなりのペ`ジングC嬬つき
    CPU においても尖貧はg佩辛嬬
rootkit についての深賀 (2)
? 云 rootkit のフックは、俚峭彜Bで隠贋される
  フ??ルからは奮することができない
  C 冱いかえれば、コンピュ`タを俚峭彜Bにすれば
    臨阿靴 (吭のない) メモリ坪否で貧きされる
  C つまり、rootkit がえてしまう
  C これを契ぐには壅湖半喘のコ`ドを火す駅勣があるが、
    これは揖rに奮の辛嬬來を貧げることを吭龍する
rootkit についての深賀 (3)
? マルチコ?鬚韻g廾が掲械に是yである
  C ペ`ジテ`ブルの彜Bが音芦協になることがあり、
    これにIするために謹くのコ`ドを駅勣とする。
  C 巷_嚠協の PoC g廾においては、
    マルチコ?に匯俳鬉靴覆ぁ
    ? 縮圄喘g廾であるため、g廾の}jさを指閲した
    ? 喘を契ぐためにC嬬をった
rootkit についての深賀 (4)
? rootkit が唹を式ぼさないものもある
  C 個措されたg廾
  C ∀襯泪轡鵑離好透`トフ??ル
    ? VMware : *.vmem
  C ハ`ドウェ?によるダンプ
    ? 1394memimage (FireWire / IEEE1394)
About all of this:

まとめ
まとめ
? F壓のラ?ブメモリフォレンジックは ^欧譴董 いる
? rootkit を奮したい栽、
  ロ`カルで嘛するソフトウェ?を穩辰擦
? rootkit に森する圭隈はある
? 匯震を尸うほどではないが、
  繍栖の好弔笋┘侫レンジックg廾を個措すべき
Have any questions?

THANK YOU.
                            Tsukasa Ooi <li@livegrid.org>
                      Livegrid Incorporated, Lead Analyst
室g猟とソ`スコ`ド
? 2009定11埖巷_嚠協
? http://a4lg.com/ において巷蝕嚠協

More Related Content

ステルスル`トキット : いヤツはどうライブメモリフォレンジックをすりiける? - PacSec 2009

  • 1. ステルスル`トキット いヤツはどうラ?ブフォレンジックをすりiける? Tsukasa Ooi <li@livegrid.org> Livegrid Incorporated, Lead Analyst
  • 3. ラ?ブメモリフォレンジックとは? ? 嘛しているマシンのメモリを児に 盾裂を佩うフォレンジック返隈 C ^^ ̄のЪ C マルウェ?の碧 ? 匯違には麗尖メモリのダンプにより_撹される
  • 4. ラ?ブメモリフォレンジックのプロセス 1. 喘ツ`ルで麗尖メモリの坪否を函誼する a. ツ`ルが麗尖メモリをマップする b. マップした麗尖メモリの坪否をコピ`する c. コピ`した坪否を隠贋する 2. 麗尖メモリダンプをフォレンジックソフトウェ?に 秘薦する 3. フォレンジックソフトウェ?で盾裂を佩う a. システムの坪否をダンプから痌する b. 痌したシステムの坪否を盾裂する
  • 5. ?ンチフォレンジックとは? (1) ? フォレンジック返隈により盾裂されることを 契ぐ、もしくは里稜鵑鮟睥させる返隈 ? 廣吭すべきは ^好蔦漾 だけではない! C 砿尖を毛れたい ^いヤツ ̄ が徭らのコンピュ`タに ?ンチフォレンジック返隈をm喘する栽がありうる!
  • 6. ?ンチフォレンジックとは? (2) ? ?ンチフォレンジック返隈が ^贋壓する ̄ だけで吭龍がある C フォレンジックの佚m來が払われる C もはやハックする駅勣すらない C そのため、 ^^ ̄ があるにもvわらず 《Vするということがあり誼る! ? つまり、フォレンジックは佚m來が凋である
  • 7. ラ?ブメモリフォレンジックのプロセス 1. 喘ツ`ルで麗尖メモリの坪否を函誼する a. ツ`ルが麗尖メモリをマップする b. マップした麗尖メモリの坪否をコピ`する この何蛍をハックする! c. コピ`した坪否を隠贋する 2. 麗尖メモリダンプをフォレンジックソフトウェ?に 秘薦する 3. フォレンジックソフトウェ?で盾裂を佩う a. システムの坪否をダンプから痌する b. 痌したシステムの坪否を盾裂する
  • 9. まずは ^講しい師h ̄ みたいに。 ? EnCase ? WinEN ? FastDump ? dd, Forensic Acquisition Tools, win32dd, Memory DD´ ? Windows 俚峭彜B (hiberfil.sys) ? Microsoft Windows クラッシュダンプ (*.dmp)
  • 11. ^なぜ ̄ そうなる? ? ペ`ジテ`ブルの\っ函り (Subverting) C Shadow Paging ? F壓のフォレンジックソフトウェ?の樋泣
  • 12. ペ`ジテ`ブルとは? (1) ? 麗尖議なメモリレ??ウトと尖議な夛を 蛍xするC ? CPU が?クセスする?ドレス (リニ??ドレス) を、 麗尖議な?ドレスにQするためのテ`ブル ? 尖?ドレス腎gを、(児云議に 4KiB の) 仝ペ`ジ々と柵ばれるI囃に蛍護して砿尖する
  • 13. ペ`ジテ`ブルとは? (2) Chunk A Page Table Chunk B Physical Memory Logical Space
  • 14. ペ`ジテ`ブルとは? (3) Linear Physical 0x12345000 0x14fab000 0x12346000 0x0c812000 0x12347000 (Not Present) 0x12348000 0x215d9000 0x12349000 0x4991f000 Linear Address Physical Address 0x12346804 0x0c812804
  • 15. ペ`ジテ`ブルとは? (4) Linear Physical 0x12345000 0x14fab000 0x12346000 0x0c812000 0x12347000 (Not Present) 0x12348000 0x215d9000 0x12349000 0x4991f000 Linear Address 0x12347804 ペ`ジフォルトk伏
  • 16. ペ`ジテ`ブルとは? (5) ? ペ`ジフォルト (箭翌) C リニ??ドレスに鬉垢詢鐇?ドレスがない栽や、 ペ`ジの?クセス崙囮に冽わない?クセスがあった栽に k伏する箭翌 C IDT によって幣されるペ`ジフォルトハンドラによってI尖される ? ペ`ジの?クセス崙囮 C 麗尖?ドレスが贋壓するか倦か (P bit) 參翌にも贋壓する C きzみ辛嬬か倦か : R/W bit C ?プリケ`ションからはiみき鋤峭か倦か : U/S bit C ペ`ジのg佩が鋤峭されているか : NX bit
  • 17. ペ`ジテ`ブルとは? (6) ? ペ`ジテ`ブルにvBするシステムレジスタがある C CR3 ペ`ジテ`ブルへの麗尖?ドレスを峺協する C CR2 ペ`ジフォルトがk伏したとき、そのフォルトを k伏させたリニ??ドレスが鯉{される
  • 18. ペ`ジテ`ブルとは? (7) ? ペ`ジテ`ブルは、メモリ砿尖において Oめて嶷勣な夛悶である ? rootkit にとっても´
  • 20. Shadow Paging (1) ? 云栖は、∀觧においてゲスト OS の メモリ腎gを∀觧する返隈の匯つ ? ペ`ジテ`ブルの}uを恬撹し、 頭圭に伏じた筝をもう頭圭へ郡啌する ? 云栖は、CPU の∀觧屶址C嬬にmらなければ Shadow Paging をg佩することができない
  • 21. ^宥械の ̄ Shadow Paging (1) ? OS のペ`ジテ`ブルをきzみ鋤峭にする ? ペ`ジテ`ブルきQえをペ`ジフォルトで奮し、 輝する荷恬に鬉垢覯掀を Shadow Page Table にして佩う。 Linear Physical Linear Physical (Virtualized) Physical (Real) 0x12345000 0x14fab000 0x12345000 0x14fab000 0x24f03000 0x12346000 0x0c812000 0x12346000 0x0c812000 0x12580000 0x12347000 0x44ab1000 ★ 0x31442000 0x12347000 0x44ab1000 ★ 0x31442000 0x1dabc000 ★ 0x4d3f2000 0x12348000 0x215d9000 0x12348000 0x215d9000 0x379df000 0x12349000 0x4991f000 0x12349000 0x4991f000 0x0732f000 (Virtualized) Page Table Shadow (Real) Page Table
  • 22. ^宥械の ̄ Shadow Paging (2) ? ^宥械は ̄ きQえたペ`ジテ`ブルと Shadow が 揖じ吭龍になるように鬉垢きQえを佩う デ`タ Page Table Shadow Page Table
  • 23. Shadow Paging (2) ? ところが、匯協訳周を困燭擦 Shadow Paging をg廾することができる。 C CR0.WP bit が械に 1 であること C CR3 の筝は OS の屡岑のw侭でのみ佩われること C ペ`ジフォルトハンドラをフックできること C (その麿謹方あるが福待) ? 宥械の訳周においては、ほとんどの OS が これらの訳周を困燭 (Windows, Linux など)
  • 24. ペ`ジテ`ブルの崙囮をZう! 1. ペ`ジフォルトハンドラを徭らの (rootkit の) ものにセットする 2. OS から歌孚するペ`ジテ`ブルとはeの (rootkit のための) ペ`ジテ`ブルを恬撹し、 Shadow Paging をg佩する 3. remapping されるメモリI囃の臨阿鯰个
  • 25. ^宥械の ̄ Shadow Paging (2) ? ^宥械は ̄ きQえたペ`ジテ`ブルと Shadow が 揖じ吭龍になるように鬉垢きQえを佩う デ`タ Page Table Shadow Page Table
  • 26. ^吭ある ̄ Shadow Paging (1) ? 吭ある Shadow Paging においては、 蒙協の (吭ある) デ`タへのマッピングを個Zする 吭あるデ`タ Page Table Shadow Page Table 個Zする! 吭なきデ`タ
  • 27. ^吭ある ̄ Shadow Paging (2) ? ペ`ジテ`ブルのきQえをOする ? きQえられたH、肝の並をチェックする C 麗尖?ドレスが、吭ある (個Zされた) デ`タまたはコ`ドであること C 鬉垢襯螢??ドレスが、吭あるデ`タまたはコ`ドが 云栖贋壓するべきリニ??ドレス ^ではない ̄ こと ? この 2 訳周を困燭栽、 rootkit は 鬉垢襯擧`ジテ`ブルへのマッピングを個Zする
  • 28. ^吭ある ̄ Shadow Paging (3) Address A 吭あるデ`タ Address A 云栖の?ドレス 吭なきデ`タ
  • 29. ^吭ある ̄ Shadow Paging (3) Address A 吭あるデ`タ Address A 云栖の?ドレス Address B Address B フォレンジックソフトが Shadow Paging がなかったり、 マップする 吭なき Shadow Paging ではこうなるはず。 仟しい?ドレス 吭なきデ`タ
  • 30. ^吭ある ̄ Shadow Paging (3) Address A 吭あるデ`タ Address A 云栖の?ドレス Address B Address B フォレンジックソフトが このようなマッピングを マップする リダ?レクトする! 仟しい?ドレス 吭なきデ`タ
  • 31. ^吭ある ̄ Shadow Paging (4) ? 箭のようなe?ドレスへのマッピングは、 ほとんどのフォレンジックソフトウェ?が 佩っていることと畠く揖じである C それだけではなく、クラッシュダンプやハ?バネ`ション フ??ルの伏撹rにも揖のことが佩われる ? Y惚として、ほとんどのフォレンジックソフトウェ?や Windows のダンプする侘塀からは音辛となる! ? また、淋譴任るメモリは ^ほとんど畠て ̄ である
  • 32. フォレンジックソフトウェ?の樋泣 (1) ? rootkit が ^贋壓できる ̄ コンテキストの嶄で 麗尖メモリの函誼を佩っていること C 麗尖メモリ嶄にペ`ジフォルトがk伏しうる C (A半の辛嬬來がある) OS のC嬬を佚喘してしまっている ? それ參翌にもある!
  • 33. フォレンジックソフトウェ?の樋泣 (2) ? ?Device?PhysicalMemory を旋喘している フォレンジックソフトウェ?が謹い C 3 定念に?ンチフォレンジックg廾が 恬られているにもvわらず! (DDefy : http://www.slideshare.net/amiable_indian/antiforensic-rootkits) C EnCase, FastDump を根めた謹方のソフトウェ?が このデバ?スを麗尖メモリの函誼に喘いている ? このデバ?スがg匯嬾墾泣となりうる C もっとgにこのデバ?スのみをフックすることで 書指の rootkit 殻ではないものの、かなりの 斌喘ソフトウェ?を遁くことができる。
  • 35. F壓のソフトウェ?だけでIする圭隈 (1) ? rootkit 奮にはロ`カルで嘛する喘 ソフトウェ?を喘いる (GMER, Rootkit Unhooker´) C gは、ロ`カルで奮する泙蠅任 奮がyしいの rootkit ではない C 貧ソフトウェ?を旋喘することで、rootkit が 聞喘しているフックを奮し、栽によっては屎できる ? フォレンジック秘薦を佚喘しない
  • 36. F壓のソフトウェ?だけでIする圭隈 (2) ? しかし、これは屏隈でしかない C rootkit が?ンスト`ルされているHには フォレンジック秘薦が畠く佚mできないことには 笋錣蠅ない ? ツ`ルのg廾を個措して rootkit に森できる? ´YES
  • 39. Previous 際際滷 : Shadow Paging (2) ? ところが、匯協訳周を困燭擦 Shadow Paging をg廾することができる。 C CR0.WP bit が械に 1 であること C CR3 の筝は OS の屡岑のw侭でのみ佩われること C ペ`ジフォルトハンドラをフックできること C (その麿謹方あるが福待) ? 宥械の訳周においては、ほとんどの OS が これらの訳周を困燭 (Windows, Linux など)
  • 40. 森する圭隈 (1) ? Shadow Paging が卆贋している念戻を雲す C CR0.WP bit を 0 にする C CR3 (ペ`ジテ`ブルへのポ?ンタ) を徭ら筝する C ペ`ジフォルトハンドラを徭らの崙囮和に崔く ? この圭隈が恷もgで森が互い!
  • 41. 森する圭隈 (2) CR3 Shadow Page Table Page Table
  • 42. 森する圭隈 (2) CR3 Shadow Own Page Table Page Table Page Table
  • 43. 森する圭隈 (3) ? 畠ての護りzみ (箭翌根む) をフックするため、 LIDT 凋綜をg佩し護りzみベクトルを筝する ? 徭らペ`ジテ`ブルを恬撹する ? そのペ`ジテ`ブルへの麗尖?ドレスを CR3 レジスタにO協し、麗尖メモリを函誼する ? まだ}はあるものの、 佚mできる麗尖メモリを函誼することができる。
  • 44. 火る (が蒙にIする駅勣はない) } (1) ? rootkit の崙囮和においては、リニ??ドレスに 鬉垢誥しい麗尖?ドレスを誼る圭隈はない! C 冱いかえれば、仟しく恬撹したペ`ジテ`ブルが 屎械かどうかは編^することができない C rootkit はまだ、ペ`ジテ`ブルの 恬撹を形墾することが尖貧辛嬬である ? 箭えば、仟しいペ`ジテ`ブルに崔きQえようとした鵬gに コンピュ`タをリセットするような好弔まだ辛嬬である。
  • 45. 火る (が蒙にIする駅勣はない) } (2) ? しかし、個措したg廾を喘いた栽、 旋喘宀に櫃鼎れず麗尖メモリの坪否だけを 遁くことはほぼ音辛嬬である。 C コンピュ`タをリセットするなどの好弔録苗椶世、 それでは旋喘宀に櫃鼎れてしまう。
  • 46. Consideration about these rootkits ROOTKIT についての深賀
  • 47. rootkit についての深賀 (1) ? PoC においては Intel x86 + Windows 鬚韻 g廾を佩ったが、尖そのものは クロスプラットフォ`ムである C x86 ?`キテクチャ貧のeのオペレ`テ?ングシステム ? Linux, Mac OS X´ C x86_64 ?`キテクチャ C その麿かなりのペ`ジングC嬬つき CPU においても尖貧はg佩辛嬬
  • 48. rootkit についての深賀 (2) ? 云 rootkit のフックは、俚峭彜Bで隠贋される フ??ルからは奮することができない C 冱いかえれば、コンピュ`タを俚峭彜Bにすれば 臨阿靴 (吭のない) メモリ坪否で貧きされる C つまり、rootkit がえてしまう C これを契ぐには壅湖半喘のコ`ドを火す駅勣があるが、 これは揖rに奮の辛嬬來を貧げることを吭龍する
  • 49. rootkit についての深賀 (3) ? マルチコ?鬚韻g廾が掲械に是yである C ペ`ジテ`ブルの彜Bが音芦協になることがあり、 これにIするために謹くのコ`ドを駅勣とする。 C 巷_嚠協の PoC g廾においては、 マルチコ?に匯俳鬉靴覆ぁ ? 縮圄喘g廾であるため、g廾の}jさを指閲した ? 喘を契ぐためにC嬬をった
  • 50. rootkit についての深賀 (4) ? rootkit が唹を式ぼさないものもある C 個措されたg廾 C ∀襯泪轡鵑離好透`トフ??ル ? VMware : *.vmem C ハ`ドウェ?によるダンプ ? 1394memimage (FireWire / IEEE1394)
  • 51. About all of this: まとめ
  • 52. まとめ ? F壓のラ?ブメモリフォレンジックは ^欧譴董 いる ? rootkit を奮したい栽、 ロ`カルで嘛するソフトウェ?を穩辰擦 ? rootkit に森する圭隈はある ? 匯震を尸うほどではないが、 繍栖の好弔笋┘侫レンジックg廾を個措すべき
  • 53. Have any questions? THANK YOU. Tsukasa Ooi <li@livegrid.org> Livegrid Incorporated, Lead Analyst