倫理的ハッキング:nmapによるサービスの識別
目次
倫理的なハッキングの前の記事では、倫理的なハッキングプロセスを実行するときにIPアドレスとサブドメインの列挙を取得するための様々なオプ 「誰がこのサブドメインが存在することを知っているので、これは非常に安全です」(あなたはそれを信じることはできませんが、それは思われるよりも一般的です)、「誰がこのサービスをこのような奇妙な番号でこのポートに入れたことを知っている」…
要するに、この記事では、IPまたはIpの範囲で開いているポートのインベントリを作成し、これが可能なときに開いているポートの下で技術を識別することが可能であるかを確認しようとします。 基本的に、この投稿は素晴らしい不可欠なツールであるnmapの使用に焦点を当てます。 それは通常、Linuxで使用されるツールですが(そしてもちろん、私はこれらの記事で使用するリファレンススイート、Kaliに含まれています)、他のオペレーティングシステム
仕事に行く前に、nmapは複雑で完全なツールであり、膨大な量のオプション、パラメータなどを備えていることを警告したいと思います。;この投稿は、ツールを使用するためのマニュアルではなく、脆弱性を検出する前に倫理的なハッキングの段階としてサービスの識別を理解するための このツールの詳細については、マニュアルを読むことをお勧めします。
オープンソースのnmapツールを使用すると、TCP、UDP、ICMP、SCTP要求などに基づいて、単一の宛先、範囲、Ipのリストをスキャンすることができます。 そして、様々なスキャン技術を取り入れています。 たとえば、TCP接続の確立がネゴシエーションとどのように機能するかを三つのステップで覚えておくことをお勧めします: まず、クライアントからポートへのSYNタイプコール、ポートが閉じられている場合はRST応答、またはSYN-ACKが開いている場合はsyn-ACK、クライアントからサーバーへのACK Nmapは、ポートが宛先でリッスンしているかどうかを判断するために、これらのタイプのメッセージに依存します。 場合によっては、これを使用できないか、リモートサーバーによって検出され、スキャンのための他の代替手段があります。
一般的な構文
nmap { }
最初のスキャン
次のコマンドを実行できます:
nmap 45.33.49.119
私たちは、ポーリングの任意の種類を入れていないので、デフォルトのポーリング、TCP SYNを使用しています。 NMAPはSYNを送信し、ACN SYNを受信した場合はポートが開いていると想定します。 オプションの追加パラメータもなく、宛先として単一のIPがあります。 このコマンドは、次のような結果を与えます:
Starting Nmap 7.70 ( https://nmap.org ) at 2019-10-01 18:12 CESTNmap scan report for ack.nmap.org (45.33.49.119)Host is up (0.19s latency).Not shown: 993 filtered portsPORT STATE SERVICE22/tcp open ssh25/tcp open smtp70/tcp closed gopher80/tcp open http113/tcp closed ident443/tcp open https31337/tcp closed EliteNmap done: 1 IP address (1 host up) scanned in 10.86 seconds
SSH、SMTPメールサーバー、webサーバー、および可能なバックオリフィス(https://www.speedguide.net/port.php?port=31337)を含む、そのIP上の開いているポートのリストを数秒で返します。
多くの場合、これは単に分析の最初のポイントですが、例えば、FTPサーバー、SSHなどの背後にあるソフトウェアです。、完全に更新され、既知の脆弱性はありません。 たとえば、SSHまたはFTP上の辞書を使用してブルートフォース攻撃を開始することができます(デフォルトまたは安全でない資格情報を持つこのタイプの
データベース(MongoDB、MySQL、PostgreSQLなど)など、認識可能なオープンポートを探して広範囲のIpを基本的に継続的にスキャンしている自動ツール(ボット)があります。)、開いているポートを検出すると、デフォルトの資格情報で自動的にログインを試みます。 たとえば、典型的なLAMP/WAMPインストールの場合、mySQLポートへのルート/アクセス。 そして、基本的には、膨大な数のデータベースが事前の人間の介入なしにハッキングされています。 多くの場合、ポート5555にあるものを”誤解させる”こと、何かを言うことは、サービスの指紋を介してmySQLであることを識別することが可能であるため、これは別のポートで開いていても実行可能です。
要するに、webサーバー、ルーター、FTPs、SSHs、データベースにデフォルトで資格情報を残すことは非常に危険です…誰もマニアを持つ必要はないので、ボットはします。
最初のパラメータ
nmapがこの情報をどのように取得したかについての情報を持ちたい場合は、-v(verbose)または-vvパラメータでトレースを増やすことができます。:
PORT STATE SERVICE REASON22/tcp open ssh syn-ack ttl 5325/tcp open smtp syn-ack ttl 5370/tcp closed gopher reset ttl 5280/tcp open http syn-ack ttl 53113/tcp closed ident reset ttl 52443/tcp open https syn-ack ttl 5331337/tcp closed Elite reset ttl 53
スキャンするためにIpの範囲を増やす
nmap 192.168.10.0/24 (subred completa)nmap 192.168.10.1-20 (20 IPs)nmap 192.168.10.*nmap 192.168.10.1 192.168.10.2 192.168.10.3
または、たとえば、最初の列挙からIpを蓄積していて、異なるIpをタブまたは改行(1つのipまたは行ごとの範囲)で区切ったファイルがあるとします。 -IL(入力リスト)パラメータを使用してファイルをロードし、IPインベントリ全体をスキャンすることができます。 また、たとえば、–excludeまたは–excludefileを使用して特定のIpを除外することもできます。
スキャンするポートの定義
スキャンするポートを手動で定義できます。 たとえば、サブネット内のポート80、443、および8080上のwebサーバーを検索する場合は、-pパラメーターを使用して検索できます:
nmap -p 80,443,8080 192.168.10.0/24
また、Nmapに”N”(整数)の最も一般的なポートをスキャンするように依頼することもできます。:
nmap --top-ports 25 192.168.10.0/24
このような答えを受け取る:
PORT STATE SERVICE21/tcp closed ftp22/tcp open ssh23/tcp closed telnet25/tcp closed smtp53/tcp open domain80/tcp open http110/tcp closed pop3111/tcp open rpcbind135/tcp closed msrpc139/tcp open netbios-ssn143/tcp closed imap199/tcp closed smux443/tcp closed https445/tcp open microsoft-ds587/tcp closed submission993/tcp closed imaps995/tcp closed pop3s1025/tcp closed NFS-or-IIS1720/tcp closed h323q9311723/tcp closed pptp3306/tcp closed mysql3389/tcp closed ms-wbt-server5900/tcp open vnc8080/tcp closed http-proxy8888/tcp closed sun-answerbook
識別子-p-を持つすべてのTCP、UDP、およびSCTPポート(低速)をスキャンするように求めることができます:
nmap -p- 192.168.10.0/24
オペレーティングシステムとサービスの識別
ご覧のように、NMAPを使用すると、IPまたは範囲でリッスンしているポートを検出できます。 後で我々はまた、他の調査手法を定義することができる方法が表示されます。 さらに、nmapを使用すると、どの技術(製品、バージョンなど)を識別しようとすることができます。)が開いているポートの背後にあるか、サーバーにインストールされているオペレーティングシステムでさえ、-Oと-sVパラメータを持つ。 この検出は、サービスが特定の呼び出しに与える回答の「署名」(指紋)に基づいています。
nmap -O -sV 192.168.10.5
PORT STATE SERVICE VERSION22/tcp open ssh OpenSSH 6.7p1 Raspbian 5+deb8u3 (protocol 2.0)53/tcp open domain ISC BIND 9.9.5 (Raspbian Linux 8.0 (Jessie based))80/tcp open http Apache httpd 2.4.10 ((Raspbian))111/tcp open rpcbind 2-4 (RPC #100000)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)4567/tcp open http Jetty 9.4.8.v201711215900/tcp open vnc RealVNC Enterprise 5.3 or later (protocol 5.0)MAC Address: B8:27:EB:CD:FE:89 (Raspberry Pi Foundation)Device type: general purposeRunning: Linux 3.X|4.XOS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4OS details: Linux 3.2 - 4.9Network Distance: 1 hopService Info: Host: RASPBERRYPI; OS: Linux; CPE: cpe:/o:linux:linux_kernel
この場合、私達はだけでなく、この機械にある特定の開いた港があることを知っています。 また、それはRaspbianを実行しているラズベリーであることを教えてくれます(これで,例えば,我々は、ユーザーとブルートフォーステストを行うことができます”pi”,デフォル
より多くのポーリング技術を使用する
デフォルトでは、nmapはポーリング技術としてSYNを使用します。 これは、高速かつ非常に侵入/検出可能な技術ではありませんが、時には、それは我々がツールのユーザーマニュアルで見ることができるように、我々は、パラメータと
たとえば、UDP呼び出しに基づいてスキャンを実行したい場合は、次のタイプの呼び出しを行うことができます:
nmap -sU 192.168.10.5
nmap
で脆弱性を検索するnessusのような”快適な”特定のツールや、さまざまなツールを統合したMetasploitのようなスイートがありますが、nmapでは脆弱性分析も実行できます。これを行うには、マシンのパス(Kaliの場合は/usr/share/nmap/scripts/)にあり、–scriptまたはそれに相当する-sCで呼び出すことができる一連のLuaスクリプトを使用します。
スクリプトは1つまたは複数のカテゴリに属することができるので、nmapに、たとえばカテゴリ内のすべてのスクリプトをホストに対して評価す “Vuln”(宛先の脆弱性を検出する専用のスクリプト)、”exploit”など、特に興味深いカテゴリがいくつかあります。
たとえば、脆弱性カテゴリのスクリプトをホストに対してスキャンしたい場合:
nmap --script vuln scanme.nmap.org
PORT STATE SERVICE22/tcp open ssh80/tcp open http| http-csrf: | Spidering limited to: maxdepth=3; maxpagecount=20; withinhost=scanme.nmap.org| Found the following possible CSRF vulnerabilities: | | Path: http://scanme.nmap.org:80/| Form id: cse-search-box-sidebar|_ Form action: https://nmap.org/search.html|http-dombased-xss: Couldn't find any DOM based XSS. | http-enum: | /images/: Potentially interesting directory w/ listing on 'apache/2.4.7 (ubuntu)' | /shared/: Potentially interesting directory w/ listing on 'apache/2.4.7 (ubuntu)'| 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.9929/tcp open nping-echo31337/tcp open Elite
ご覧のとおり、スクリプトはSlowlorisサービス拒否攻撃に基づいて潜在的な脆弱性を検出しました。 上記のルートにあるスクリプトを分析すると、http-slowlorisと呼ばれるこの脆弱性を悪用するスクリプトが正確に存在することがわかります。 スクリプトの詳細情報が必要な場合は、次のコマンドを起動できます:
nmap --script-help http-slowloris
スクリプトの動作、起動方法(–scriptと–script-argsを使用してnmap自体で実行することもできます)などを説明します。 また、たとえば、脆弱性を探すすべてのスクリプトの説明を取得することもできます:
nmap --script-help vuln
たとえば、特定のタイプのすべてのスクリプトを起動することもできます。 たとえば、特定のホスト上のSMBプロトコルを介して脆弱性をスキャンしたい場合:
nmap --script smb-* 192.168.10.5
また、たとえば、範囲に対して特定のスクリプトを選択して、ネットワーク全体の脆弱性を評価することもできます。 -Scriptパラメーター
nmap --script-help vuln
nmap --script
要するに、nmapには、脆弱性を評価したり、悪用を起動するための興味深いオプションも含まれていますが、この目的のために一般的に使用される他のツー
その他の興味深いオプション
コメントしたように、nmapには多くのオプションがあり、ポストで小さな割合でもカバーしようとするこ 実際には、ほぼ500ページの公式のnmapの本があります…しかし、いずれにしても、私たちはここで興味深いように見えるいくつかをコメントしようとします。
私たちがコメントしたように、nmapには多くのオプションがあり、投稿で小さな割合でもカバーしようとすることは不可能です。 実際には、ほぼ500ページの公式のnmapの本があります…しかし、いずれにしても、私たちはここで興味深いように見えるいくつかをコメントしようとします。
- このツールを使用すると、-oXまたは-oNを使用して、XML形式などの処理可能な出力ファイルでスキャン結果を生成することができます。
- 広範囲のIpをスキャンする場合、-nパラメータを使用してDNS逆解決の試行を無効にすることができます。
- コマンドの実行中に、”V”キーを押すことで、コンソールに表示される情報のレベル(冗長性)を上げることができます。
- 私たちを切断するファイアウォールがあれば、-Pnを試すことができます。
要するに、ホストまたはIpの範囲上の開いているポートやサービスを識別するためのツールとして、nmapの”簡単な”紹介を開発しようとしました。 後の記事では、脆弱性を検出するための他の方法を見ていきます。
準備はいいか?
文書をより効率的に処理する時が来ました