見出し画像

Hack The Box で役立ったツール3選

こんにちは、エンジニアのikemです。

以前、Hack The Box をさわる機会がありました。
これはペネトレーションテスト学習用のためのオンラインプラットフォームです。
攻撃用の検証環境(Machine)が用意されていて、シェルを奪取するなどしてフラグ(user.txtとroot.txt)を取得することが目的です。
Machineはさまざまなものが用意されており、難易度はeasy, mediam, hard, insaneの4種類があります。

Webプログラミングとは異なるスキルが要求されるため、新鮮な体験でした。
今回、Hack The Box をやってみて、便利だと思ったツールを3つ紹介したいと思います。
(以下は全て攻撃用の検証環境に対して行ったものです)

1. Nmap

ネットワークのホスト上で空いているportは何か、どのようなサービス(アプリケーション名とバージョン)が動いているか、ホストで動いているOS(OS名とバージョン)は何か、などを調査するツールです。
まずはとっかかりを掴むために、Nmapを使って空いているポートを調べます。

以下のように対象のIPアドレスを指定すると、空いているポートとサービスとバージョンを返します。

$ nmap -sV 10.129.44.55
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-03 23:26 JST
Nmap scan report for 10.129.44.55
Host is up (0.32s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE      VERSION
135/tcp  open  msrpc        Microsoft Windows RPC
139/tcp  open  netbios-ssn  Microsoft Windows netbios-ssn
445/tcp  open  microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
1433/tcp open  ms-sql-s     Microsoft SQL Server 2017 14.00.1000
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows

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

また、NmapにはNmap Scripting Engineという、Lua言語で書かれたスクリプトを実行できる機能があります。
Nampが持っているスクリプト一覧
https://nmap.org/nsedoc/index.html
-- script オプションでカテゴリ or スクリプトファイルを指定します

スクリプト単位で実行できますが、スクリプトはカテゴリー分けされており、カテゴリー単位で実行することもできます。
例えば、vulnカテゴリーに属するスクリプトは以下です。
https://nmap.org/nsedoc/categories/vuln.html
vulnを指定すると、脆弱性をCVEで出力します。

$ nmap -sV 10.129.44.55 --script vuln
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-03 23:28 JST
Nmap scan report for 10.129.44.55
Host is up (0.28s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE      VERSION
135/tcp  open  msrpc        Microsoft Windows RPC
139/tcp  open  netbios-ssn  Microsoft Windows netbios-ssn
445/tcp  open  microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
1433/tcp open  ms-sql-s     Microsoft SQL Server 2017 14.00.1000
|_sslv2-drown:
| vulners:
|   cpe:/a:microsoft:sql_server:2017:
|     	CVE-2021-1636	6.5	https://vulners.com/cve/CVE-2021-1636
|     	CVE-2019-1068	6.5	https://vulners.com/cve/CVE-2019-1068
|     	58ED7124-6DD1-5DA4-AB82-DCAF13F69BD6	6.5	https://vulners.com/githubexploit/58ED7124-6DD1-5DA4-AB82-DCAF13F69BD6	*EXPLOIT*
|_    	CVE-2019-0819	4.0	https://vulners.com/cve/CVE-2019-0819
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows

Host script results:
| smb-vuln-ms08-067:
|   VULNERABLE:
|   Microsoft Windows system vulnerable to remote code execution (MS08-067)
|     State: LIKELY VULNERABLE
|     IDs:  CVE:CVE-2008-4250
|           The Server service in Microsoft Windows 2000 SP4, XP SP2 and SP3, Server 2003 SP1 and SP2,
|           Vista Gold and SP1, Server 2008, and 7 Pre-Beta allows remote attackers to execute arbitrary
|           code via a crafted RPC request that triggers the overflow during path canonicalization.
|
|     Disclosure date: 2008-10-23
|     References:
|       https://technet.microsoft.com/en-us/library/security/ms08-067.aspx
|_      https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-4250
|_smb-vuln-ms10-054: false
|_smb-vuln-ms10-061: NT_STATUS_OBJECT_NAME_NOT_FOUND

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

ちなみに、Nmapは映画にも登場しています。
https://nmap.org/movies/

2. BurpSuite

ローカルプロキシツールです。ブラウザとWebサーバーとの間に入って、パラメータの改ざんができます。

導入方法は、この辺を参考にしました。
https://www.leon-tec.co.jp/blog/diary/10174/

よく使用する機能

Proxy

ブラウザからサーバーへのリクエストをBurpSuiteで保留し、パラメータなどを改ざんして送信することができます。

使い方
1. proxyタブを選択します
2. interceptをonにします
3. ブラウザで任意のURLを入力し、ブラウザからリクエストが送信されます4. ブラウザからサーバーへのリクエストが一旦BurpSuiteで保留されます
5. 送信するパラメータを変更します
6. forwardボタンで、送信します

画像1

Intruder

webアプリへ攻撃する機能です。単純なディレクトリブルートフォース攻撃から、複雑なSQLインジェクション攻撃まで、さまざまな攻撃をカスタマイズできます。

使い方
1. Attack Target を指定

画像2

2. Payload Position を設定
Payloadsを入れる場所を設定します。
以下では、$user$が任意の値で置換可能な変数になっています。

画像4


3. Payloads を設定
Payload Position(ここでは$user$)を置換する値を設定します。
Payload Optionsは、カンマ区切りの値をクリップボードにコピーしておけば、Pasteボタンでそのままリストとして設定できます。
ここでは、1から100の値を設定しました。

画像3


4. attack
attackボタンを押して攻撃を開始します。

画像5


5. それぞれのレスポンス結果を閲覧可能です

画像6

3. gobuster

https://github.com/OJ/gobuster
Golangで書かれたブルートフォース攻撃ツールです。
ワードリストを指定して、ディレクトリに対してブルートフォース攻撃し、手がかりを見つけます。

$ gobuster dir --url http://10.129.57.240/ --wordlist /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://10.129.57.240/
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.1.0
[+] Extensions:              php
[+] Timeout:                 10s
===============================================================
2022/01/06 14:07:59 Starting gobuster in directory enumeration mode
===============================================================
/images               (Status: 301) [Size: 315] [--> http://10.129.57.240/images/]
/index.php            (Status: 200) [Size: 10932]
/themes               (Status: 301) [Size: 315] [--> http://10.129.57.240/themes/]
/uploads              (Status: 301) [Size: 316] [--> http://10.129.57.240/uploads/]
/css                  (Status: 301) [Size: 312] [--> http://10.129.57.240/css/]
/js                   (Status: 301) [Size: 311] [--> http://10.129.57.240/js/]
/fonts                (Status: 301) [Size: 314] [--> http://10.129.57.240/fonts/]

上記だと、/uploadsから脆弱性がないか調査したりします。

Kali Linux にデフォルトで入っているワードリストは以下です。

$ tree -l -L 3 /usr/share/wordlists
/usr/share/wordlists
├── dirb -> /usr/share/dirb/wordlists
│   ├── big.txt
│   ├── catala.txt
│   ├── common.txt
│   ├── euskera.txt
│   ├── extensions_common.txt
│   ├── indexes.txt
│   ├── mutations_common.txt
│   ├── others
│   │   ├── best1050.txt
│   │   ├── best110.txt
│   │   ├── best15.txt
│   │   └── names.txt
│   ├── small.txt
│   ├── spanish.txt
│   ├── stress
│   │   ├── alphanum_case_extra.txt
│   │   ├── alphanum_case.txt
│   │   ├── char.txt
│   │   ├── doble_uri_hex.txt
│   │   ├── test_ext.txt
│   │   ├── unicode.txt
│   │   └── uri_hex.txt
│   └── vulns
│       ├── apache.txt
│       ├── axis.txt
│       ├── cgis.txt
│       ├── coldfusion.txt
│       ├── domino.txt
│       ├── fatwire_pagenames.txt
│       ├── fatwire.txt
│       ├── frontpage.txt
│       ├── hpsmh.txt
│       ├── hyperion.txt
│       ├── iis.txt
│       ├── iplanet.txt
│       ├── jboss.txt
│       ├── jersey.txt
│       ├── jrun.txt
│       ├── netware.txt
│       ├── oracle.txt
│       ├── ror.txt
│       ├── sap.txt
│       ├── sharepoint.txt
│       ├── sunas.txt
│       ├── tests.txt
│       ├── tomcat.txt
│       ├── vignette.txt
│       ├── weblogic.txt
│       └── websphere.txt
├── dirbuster -> /usr/share/dirbuster/wordlists
│   ├── apache-user-enum-1.0.txt
│   ├── apache-user-enum-2.0.txt
│   ├── directories.jbrofuzz
│   ├── directory-list-1.0.txt
│   ├── directory-list-2.3-medium.txt
│   ├── directory-list-2.3-small.txt
│   ├── directory-list-lowercase-2.3-medium.txt
│   └── directory-list-lowercase-2.3-small.txt
├── fasttrack.txt -> /usr/share/set/src/fasttrack/wordlist.txt
├── fern-wifi -> /usr/share/fern-wifi-cracker/extras/wordlists
│   └── common.txt
├── metasploit -> /usr/share/metasploit-framework/data/wordlists
│   ├── adobe_top100_pass.txt
│   ├── av_hips_executables.txt
│   ├── av-update-urls.txt
│   ├── burnett_top_1024.txt
│   ├── burnett_top_500.txt
│   ├── can_flood_frames.txt
│   ├── cms400net_default_userpass.txt
│   ├── common_roots.txt
│   ├── dangerzone_a.txt
│   ├── dangerzone_b.txt
│   ├── db2_default_pass.txt
│   ├── db2_default_userpass.txt
│   ├── db2_default_user.txt
│   ├── default_pass_for_services_unhash.txt
│   ├── default_userpass_for_services_unhash.txt
│   ├── default_users_for_services_unhash.txt
│   ├── dlink_telnet_backdoor_userpass.txt
│   ├── hci_oracle_passwords.csv
│   ├── http_default_pass.txt
│   ├── http_default_userpass.txt
│   ├── http_default_users.txt
│   ├── http_owa_common.txt
│   ├── idrac_default_pass.txt
│   ├── idrac_default_user.txt
│   ├── ipmi_passwords.txt
│   ├── ipmi_users.txt
│   ├── joomla.txt
│   ├── keyboard-patterns.txt
│   ├── lync_subdomains.txt
│   ├── malicious_urls.txt
│   ├── mirai_pass.txt
│   ├── mirai_user_pass.txt
│   ├── mirai_user.txt
│   ├── multi_vendor_cctv_dvr_pass.txt
│   ├── multi_vendor_cctv_dvr_users.txt
│   ├── named_pipes.txt
│   ├── namelist.txt
│   ├── oracle_default_hashes.txt
│   ├── oracle_default_passwords.csv
│   ├── oracle_default_userpass.txt
│   ├── password.lst
│   ├── piata_ssh_userpass.txt
│   ├── postgres_default_pass.txt
│   ├── postgres_default_userpass.txt
│   ├── postgres_default_user.txt
│   ├── root_userpass.txt
│   ├── routers_userpass.txt
│   ├── rpc_names.txt
│   ├── rservices_from_users.txt
│   ├── sap_common.txt
│   ├── sap_default.txt
│   ├── sap_icm_paths.txt
│   ├── scada_default_userpass.txt
│   ├── sensitive_files.txt
│   ├── sensitive_files_win.txt
│   ├── sid.txt
│   ├── snmp_default_pass.txt
│   ├── telerik_ui_asp_net_ajax_versions.txt
│   ├── telnet_cdata_ftth_backdoor_userpass.txt
│   ├── tftp.txt
│   ├── tomcat_mgr_default_pass.txt
│   ├── tomcat_mgr_default_userpass.txt
│   ├── tomcat_mgr_default_users.txt
│   ├── unix_passwords.txt
│   ├── unix_users.txt
│   ├── vnc_passwords.txt
│   ├── vxworks_collide_20.txt
│   ├── vxworks_common_20.txt
│   ├── wp-plugins.txt
│   └── wp-themes.txt
├── nmap.lst -> /usr/share/nmap/nselib/data/passwords.lst
├── rockyou.txt
└── wfuzz -> /usr/share/wfuzz/wordlist
   ├── general
   │   ├── admin-panels.txt
   │   ├── big.txt
   │   ├── catala.txt
   │   ├── common.txt
   │   ├── euskera.txt
   │   ├── extensions_common.txt
   │   ├── http_methods.txt
   │   ├── medium.txt
   │   ├── megabeast.txt
   │   ├── mutations_common.txt
   │   ├── spanish.txt
   │   └── test.txt
   ├── Injections
   │   ├── All_attack.txt
   │   ├── bad_chars.txt
   │   ├── SQL.txt
   │   ├── Traversal.txt
   │   ├── XML.txt
   │   └── XSS.txt
   ├── others
   │   ├── common_pass.txt
   │   └── names.txt
   ├── stress
   │   ├── alphanum_case_extra.txt
   │   ├── alphanum_case.txt
   │   ├── char.txt
   │   ├── doble_uri_hex.txt
   │   ├── test_ext.txt
   │   └── uri_hex.txt
   ├── vulns
   │   ├── apache.txt
   │   ├── cgis.txt
   │   ├── coldfusion.txt
   │   ├── dirTraversal-nix.txt
   │   ├── dirTraversal.txt
   │   ├── dirTraversal-win.txt
   │   ├── domino.txt
   │   ├── fatwire_pagenames.txt
   │   ├── fatwire.txt
   │   ├── frontpage.txt
   │   ├── iis.txt
   │   ├── iplanet.txt
   │   ├── jrun.txt
   │   ├── netware.txt
   │   ├── oracle9i.txt
   │   ├── sharepoint.txt
   │   ├── sql_inj.txt
   │   ├── sunas.txt
   │   ├── tests.txt
   │   ├── tomcat.txt
   │   ├── vignette.txt
   │   ├── weblogic.txt
   │   └── websphere.txt
   └── webservices
       ├── ws-dirs.txt
       └── ws-files.txt

14 directories, 179 files

最後に

homieでは一緒に働く仲間を絶賛募集中です。興味をお持ちの方はお問い合わせください。