Port 53

明日のための技術メモ

TryHackMe Room: Nmap

随分ご無沙汰でした。 久々にブログ書きます。

仕事でnmapに触れることもあり、Pentestの教育サイトの1つ TryHackMeでPentestの練習をしてみた。
今回は入門編のRoomであるNmapで実際に使い方をおさらいしてみる。
ポートスキャンは脆弱性調査に使われるが、攻撃者の場合は攻撃前の偵察で使ってくる。
事前に許可されているIPアドレスかをよく確認すること。悪用厳禁。

tryhackme.com

目次

TryHackMeとは

ペンテストの入門向けサイト。Roomと言って、コマンドの使い方や、
実際のやられ環境が用意されていて、それに対してペンテストの練習ができる。
無料プランでも十分楽しめる。課金すると挑戦できるRoomが増えたり、
学習コースやビデオ等のコンテンツの解禁、個人用マシンが使えるらしい。
1年で月10ドル。(学生さんは月8ドル)
今の所無料ユーザで使っている。

他に有名所だと、HackTheBoxもあるけど、
TryHackMeの方が、導入(OpenVPNの使い方等)から丁寧に解説してくれていることもあり、
本当に初めての人はこっちから始めた方が良いと感じた。

Nmap

tryhackme.com

Step1で、Deployボタンを押してマシンを立ち上げてスタート。
ただ、今回はStep2でNmapの使い方を散々聞かれるので、マシンを立ち上げるのは、
Step3に入るタイミングで良い。(無料だと基本1時間、延長してももう1時間までなので)

Nmap Quiz

nmapの使い方は、nmap -hコマンドラインで実行するか、
以下のリファレンスガイドをじっくり読む。
また、念の為、原則管理者権限でスキャンすること。一般ユーザだと結果が違うので。
問題文はざっくり訳です。

nmap.org

1. Helpにアクセスするにはどうすれば良い?

nmap -h [IPAddr]

これをひたすら読みながら残りの演習を進める。

2. ステルススキャンとしても呼ばれ、Synスキャンとして最初に出てくるものは何か?

nmap -sS [IPAddr]

3. そんなによく使われるわけではないが、UDPスキャンをするには?

nmap -sU [IPAddr]

UDPは到達確認をしないので、TCPスキャンに比べたら遅い。

4. OSの特定をするには?

nmap -O [IPAddr]

OSのO、って覚えてる。

5. サービスバージョンの特定に使われるのは?

nmap -sV [IPAddr]

Serviceって覚えてる。よく使う。

6. スキャンの詳細な内容を知りたい。その時に使うフラグは?

nmap -v [IPAddr]

verboseのvって覚える。

7. スキャンの内容をとってもよく知りたい時は?

nmap -vv [IPAddr]

very verboseね

8. xmlファイルでスキャン結果を保存したい時は?

nmap -oX [IPAddr]

output XML。他にも-oG だとGreppableとか。

9. アグレッシブスキャン。とにかく結果がほしい時は?

nmap -A [IPAddr]

ぶっちゃけこれが最強。-Oも-sVも含め全部やってくれる。その代わり遅い。

10. タイミングを最大レベルに設定したい。別名Insaneとも。

nmap -T5 [IPAddr]

T5だとめちゃくちゃ雑、という認識なので、お急ぎのときは-T4くらいにしておく

11. 特定のポートだけスキャンしたいです

nmap -p [port number] [IPAddr]

12. 全ポートスキャンしたいです

nmap -p-  [IPAddr]

1番から65535番までばばーんとスキャンする。

13. NSEスクリプトを使いたい時につけるオプションは?

nmap --script [スクリプト名 / スクリプトのカテゴリ名]

14. 脆弱性調査カテゴリのNSEスクリプトを全部試したい

nmap --script vuln

vulnというカテゴリ名になっている

15. スキャン先のホストにPingしたくない時につけるオプションは?

nmap -Pn  [IPAddr]

これ知らなかった...

Nmap Scanning

ここまで超長かった。これからやっとマシンを立ち上げて、
OpenVPNに接続し、スキャンをかける。 IPアドレスは、私がやった時の環境なので、適宜読み替えを。

1. SYNスキャン→空いているポートの特定

問1でSYNスキャンをしろと言われているので、nmap -sSをする。

~ $ sudo nmap -sS 10.10.152.42 
Password:
Sorry, try again.
Password:
Starting Nmap 7.80 ( https://nmap.org ) at 2020-08-08 18:22 JST
Nmap scan report for 10.10.152.42
Host is up (0.37s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 3.65 seconds

ポートはTCP22番、80番が空いている。問2は2つ, 問3はTCPが答え。

2. 起動サービスの特定

~ $ sudo nmap -sV 10.10.152.42 
Password:
Starting Nmap 7.80 ( https://nmap.org ) at 2020-08-08 18:33 JST
Nmap scan report for 10.10.152.42
Host is up (0.37s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.10 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

サービスの特定をしたところ、OpenSSHとApacheがいた。
問4: 22番ポートで起動しているサービスバージョンは、6.6.1p1

3. アグレッシブスキャンをしてみる

問5: ポート80番の結果で設定されていないものは、httponly

$ sudo nmap -A 10.10.152.42 
Starting Nmap 7.80 ( https://nmap.org ) at 2020-08-08 18:36 JST
Nmap scan report for 10.10.152.42
Host is up (0.38s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   1024 73:71:6d:b3:7b:3c:a5:eb:a8:31:80:8b:ef:f5:35:82 (DSA)
|   2048 f0:06:ab:ea:d2:c9:9e:e4:dd:18:09:8a:fa:32:5f:79 (RSA)
|   256 fb:0c:ff:3d:bc:42:53:7d:ef:3f:68:4b:47:4e:12:be (ECDSA)
|_  256 f7:71:e1:fa:0d:9c:e2:66:2d:70:2b:4b:b8:e1:63:ec (ED25519)
80/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))
| http-cookie-flags: 
|   /: 
|     PHPSESSID: 
|_      httponly flag not set
| http-robots.txt: 1 disallowed entry 
|_/
|_http-server-header: Apache/2.4.7 (Ubuntu)
| http-title: Login :: Damn Vulnerable Web Application (DVWA) v1.10 *Develop...
|_Requested resource was login.php
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.80%E=4%D=8/8%OT=22%CT=1%CU=34391%PV=Y%DS=4%DC=T%G=Y%TM=5F2E7251
OS:%P=x86_64-apple-darwin19.0.0)SEQ(SP=FF%GCD=1%ISR=FF%TI=Z%CI=I%II=I%TS=8)
OS:OPS(O1=M508ST11NW6%O2=M508ST11NW6%O3=M508NNT11NW6%O4=M508ST11NW6%O5=M508
OS:ST11NW6%O6=M508ST11)WIN(W1=68DF%W2=68DF%W3=68DF%W4=68DF%W5=68DF%W6=68DF)
OS:ECN(R=Y%DF=Y%T=40%W=6903%O=M508NNSNW6%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%
OS:F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T
OS:5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=
OS:Z%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF
OS:=N%T=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40
OS:%CD=S)

Network Distance: 4 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE (using port 1720/tcp)
HOP RTT       ADDRESS
1   123.29 ms 10.4.0.1
2   ... 3
4   398.11 ms 10.10.152.42

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 53.97 seconds

4. DoS脆弱性の調査

DoS脆弱性があるらしいので、スキャンをかける。
-sCは、--script=defaultと同義。vulnカテゴリでスキャン。
問6: 見つかったDoS脆弱性について、スキャン結果のセクションタイトルで答えよ
http-slowloris-check

 $ sudo nmap -T4 -sC --script vuln 10.10.152.42 
Starting Nmap 7.80 ( https://nmap.org ) at 2020-08-08 18:43 JST
Pre-scan script results:
| broadcast-avahi-dos: 
|   Discovered hosts:
|     224.0.0.251
|   After NULL UDP avahi packet DoS (CVE-2011-1002).
|_  Hosts are all up (not vulnerable).
Nmap scan report for 10.10.152.42
Host is up (0.39s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
80/tcp open  http
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
| http-cookie-flags: 
|   /: 
|     PHPSESSID: 
|_      httponly flag not set
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
| http-slowloris-check: 
|   VULNERABLE:
|   Slowloris DOS attack
|     State: LIKELY VULNERABLE
|     IDs:  CVE:CVE-2007-6750
|       Slowloris tries to keep many connections to the target web server open and hold
|       them open as long as possible.  It accomplishes this by opening connections to
|       the target web server and sending a partial request. By doing so, it starves
|       the http server's resources causing Denial Of Service.
|       
|     Disclosure date: 2009-09-17
|     References:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750
|_      http://ha.ckers.org/slowloris/
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.

Nmap done: 1 IP address (1 host up) scanned in 351.14 seconds

ちなみに、脆弱性の詳細は以下。

nvd.nist.gov