22 KiB
161,162,10161,10162/udp - SNMPのペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksのグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。
バグバウンティのヒント: Intigritiにサインアップしてください。これは、ハッカーによって作成されたプレミアムなバグバウンティプラットフォームです!今すぐhttps://go.intigriti.com/hacktricksに参加して、最大**$100,000**のバウンティを獲得しましょう!
{% embed url="https://go.intigriti.com/hacktricks" %}
基本情報
**SNMP(Simple Network Management Protocol)**は、ネットワーク内のさまざまなデバイス(ルーター、スイッチ、プリンター、IoTなど)を監視するために使用されるプロトコルです。
PORT STATE SERVICE REASON VERSION
161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public)
{% hint style="info" %} SNMPは、トラップのためにポート162/UDPも使用します。これらは、明示的に要求されないまま、SNMPサーバからクライアントに送信されるデータパケットです。 {% endhint %}
MIB
SNMPアクセスがさまざまなメーカーやクライアントサーバの組み合わせで機能するようにするために、Management Information Base(MIB)が作成されました。MIBは、デバイス情報を格納するための独立した形式です。MIBは、デバイスのすべてのクエリ可能なSNMPオブジェクトが標準化されたツリー階層でリストされているテキストファイルです。少なくとも1つのObject Identifier(OID)
を含み、必要な一意のアドレスと名前に加えて、各オブジェクトのタイプ、アクセス権、および説明に関する情報も提供します。
MIBファイルは、Abstract Syntax Notation One(ASN.1)
ベースのASCIIテキスト形式で書かれています。MIBにはデータは含まれていませんが、どの情報をどこで見つけるか、それがどのように見えるか、特定のOIDに対する返り値や使用されるデータ型などを説明しています。
OID
OIDはオブジェクト識別子の略です。OIDはMIB階層内の管理対象オブジェクトを一意に識別します。これはツリーとして表現され、そのレベルは異なる組織によって割り当てられます。トップレベルのMIBオブジェクトID(OID)は、異なる標準組織に属しています。
ベンダーは、自社製品の管理対象オブジェクトを含むプライベートブランチを定義します。
ウェブ上でOIDツリーをナビゲートするには、http://www.oid-info.com/cgi-bin/display?tree=#focusにアクセスするか、http://oid-info.com/get/1.3.6.1.2.1.1にアクセスしてOIDの意味を確認できます(例:1.3.6.1.2.1.1
)。
1.3.6.1.2.1内のようなよく知られたOIDもあります。これは、MIB-2で定義されたSimple Network Management Protocol(SNMP)変数を参照しています。そして、このOIDから保留中のOIDを取得することで、いくつかの興味深いホストデータ(システムデータ、ネットワークデータ、プロセスデータなど)を取得できます。
OIDの例
1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7
このアドレスの詳細は以下の通りです。
- 1 - これはISOと呼ばれ、これがOIDであることを確立します。これがすべてのOIDが「1」で始まる理由です。
- 3 - これはORGと呼ばれ、デバイスを構築した組織を指定するために使用されます。
- 6 - これはdodまたはDepartment of Defenseであり、最初にインターネットを確立した組織です。
- 1 - これはインターネットの値で、すべての通信がインターネットを介して行われることを示します。
- 4 - この値は、このデバイスが政府のものではなく、私企業のものであることを示します。
- 1 - この値は、デバイスが企業または事業体によって作られたことを示します。
これらの最初の6つの値は、すべてのデバイスに対して同じであり、基本的な情報を提供します。政府が製造したデバイス以外のすべてのOIDには、この数列が同じになります。
次の数列に進みましょう。
- 1452 - このデバイスを製造した組織の名前を示します。
- 1 - デバイスのタイプを説明します。この場合、アラーム時計です。
- 2 - このデバイスがリモート端末ユニットであることを示します。
残りの値はデバイスに関する具体的な情報を提供します。
- 5 - 離散アラームポイントを示します。
- 1 - デバイス内の特定のポイント
- 3 - ポート
- 21 - ポートのアドレス
- 1 - ポートの表示
- 4 - ポイント番号
- 7 - ポイントの状態
(例は こちらから取得しました)
SNMPのバージョン
SNMPには2つの重要なバージョンがあります。
- SNMPv1:主要なバージョンで、最も頻繁に使用されています。認証は文字列(コミュニティストリング)に基づいており、すべての情報が平文で送信されます。バージョン2および2cも情報を平文で送信し、認証にはコミュニティストリングが使用されます。
- SNMPv3:より良い認証形式を使用し、情報は暗号化されて送信されます(辞書攻撃は実行できますが、SNMPv1およびv2よりも正しい認証情報を見つけるのははるかに困難です)。
コミュニティストリング
前述のように、MIBに保存された情報にアクセスするには、バージョン1および2/2cではコミュニティストリング、バージョン3では認証情報が必要です。
コミュニティストリングには2つのタイプがあります。
public
:主に読み取り専用の機能private
:一般的に読み取り/書き込みの機能
OIDの書き込み可能性は使用されるコミュニティストリングに依存するため、「public」が使用されているとわかっても、一部の値を書き込むことができる場合があります。また、常に「読み取り専用」であるオブジェクトも存在する場合があります。
オブジェクトに書き込みしようとすると、「noSuchName」または「readOnly」エラーが受信されます。
バージョン1および2/2cでは、不正なコミュニティストリングを使用すると、サーバは応答しません。したがって、応答がある場合は、有効なコミュニティストリングが使用されたことになります。
ポート
- SNMPエージェントはUDPポート161でリクエストを受信します。
- マネージャはポート162で通知(トラップおよびInformRequests)を受信します。
- Transport Layer SecurityまたはDatagram Transport Layer Securityと共に使用する場合、リクエストはポート10161で受信され、通知はポート10162に送信されます。
Brute-Force Community String (v1 and v2c)
コミュニティストリングを推測するために、辞書攻撃を実行することができます。ここでSNMPに対してブルートフォース攻撃を実行するさまざまな方法を確認してください。よく使用されるコミュニティストリングはpublic
です。
Enumerating SNMP
デバイスから収集された各OIDの意味を確認するために、以下のものをインストールすることをお勧めします:
apt-get install snmp-mibs-downloader
download-mibs
# Finally comment the line saying "mibs :" in /etc/snmp/snmp.conf
sudo vi /etc/snmp/snmp.conf
もし有効なコミュニティストリングを知っている場合、SNMPWalkまたはSNMP-Checkを使用してデータにアクセスすることができます。
snmpbulkwalk -c [COMM_STRING] -v [VERSION] [IP] . #Don't forget the final dot
snmpbulkwalk -c public -v2c 10.10.11.136 .
snmpwalk -v [VERSION_SNMP] -c [COMM_STRING] [DIR_IP]
snmpwalk -v [VERSION_SNMP] -c [COMM_STRING] [DIR_IP] 1.3.6.1.2.1.4.34.1.3 #Get IPv6, needed dec2hex
snmpwalk -v [VERSION_SNMP] -c [COMM_STRING] [DIR_IP] NET-SNMP-EXTEND-MIB::nsExtendObjects #get extended
snmpwalk -v [VERSION_SNMP] -c [COMM_STRING] [DIR_IP] .1 #Enum all
snmp-check [DIR_IP] -p [PORT] -c [COMM_STRING]
nmap --script "snmp* and not snmp-brute" <target>
braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID
拡張クエリ(download-mibs)のおかげで、次のコマンドを使用してシステムについてさらに詳細な列挙が可能です:
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
SNMPには、ホストに関する多くの情報があります。興味深い情報には、ネットワークインターフェース(IPv4およびIPv6アドレス)、ユーザー名、稼働時間、サーバー/OSのバージョン、および実行中のプロセス(パスワードを含む場合があります)が含まれます。
危険な設定
https://academy.hackthebox.com/module/112/section/1075から引用
設定 | 説明 |
---|---|
rwuser noauth |
認証なしで完全なOIDツリーへのアクセスを提供します。 |
rwcommunity <community string> <IPv4 address> |
リクエストがどこから送信されたかに関係なく、完全なOIDツリーへのアクセスを提供します。 |
rwcommunity6 <community string> <IPv6 address> |
IPv6を使用する点を除いて、rwcommunity と同じアクセスを提供します。 |
Cisco
Ciscoの機器を使用している場合は、次のページを参照してください:
{% content-ref url="cisco-snmp.md" %} cisco-snmp.md {% endcontent-ref %}
SNMPからRCEへ
SNMPサービス内で値を書き込むことができる文字列を持っている場合、それを悪用してコマンドを実行することができるかもしれません:
{% content-ref url="snmp-rce.md" %} snmp-rce.md {% endcontent-ref %}
Massive SNMP
Braa は大量のSNMPスキャナーです。このツールの意図された使用法は、もちろんSNMPクエリを実行することですが、net-snmpのsnmpwalkとは異なり、数十台または数百台のホストに同時にクエリを実行し、単一のプロセスで行うことができます。そのため、システムリソースを非常に少なく消費し、非常に高速なスキャンを行います。
Braaは独自のSNMPスタックを実装しているため、net-snmpのようなSNMPライブラリは必要ありません。
構文: braa [コミュニティストリング]@[SNMPサーバーのIP]:[iso id]
braa ignite123@192.168.1.125:.1.3.6.*
これは、手動で処理することができないほどの多くの情報を抽出することができます。
では、最も興味深い情報を探してみましょう(https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/から):
デバイス
最初に行うことの一つは、各ファイルから sysDesc .1.3.6.1.2.1.1.1.0 MIB データを抽出し、収集した情報からどのデバイスがあるかを判断することです。次の grep コマンドを使用することで簡単に行うことができます:
grep ".1.3.6.1.2.1.1.1.0" *.snmp
プライベートストリングの特定
例えば、組織がCisco IOSルーターで使用しているプライベートコミュニティストリングを特定できれば、そのコミュニティストリングを使用してそれらのルーターから実行中の設定を抽出することができます。このようなデータを見つけるための最良の方法は、しばしばSNMPトラップデータに関連しています。したがって、次のgrepを使用して、"trap"というキーワードを検索して多くのMIBデータを迅速に解析することができます。
grep -i "trap" *.snmp
ユーザー名/パスワード
興味深い別の領域はログです。私はMIBテーブル内にログを保持しているデバイスがいくつかあることを発見しました。これらのログには、ログインの試行が失敗した情報も含まれています。TelnetやSSHを介してデバイスにログインした際に、パスワードをユーザー名として誤って入力したことがあるか思い出してみてください。私は通常、fail、failed、または_login_などのキーワードを検索し、そのデータを調べて価値のある情報がないか確認します。
grep -i "login\|fail" *.snmp
メール
Emails are a common communication method used by individuals and organizations. They are often used for sending and receiving messages, files, and other types of information.
メールは、個人や組織によってよく使われるコミュニケーション手段です。メッセージやファイル、その他の情報を送受信するためによく使用されます。
Emails are typically sent and received through email servers, which are responsible for handling the transmission and delivery of emails.
メールは通常、メールサーバーを介して送受信されます。メールサーバーは、メールの送信と配信を担当します。
When conducting a penetration test, it is important to assess the security of the email infrastructure to identify any vulnerabilities that could be exploited by an attacker.
ペネトレーションテストを実施する際には、攻撃者によって悪用される可能性のある脆弱性を特定するために、メールインフラストラクチャのセキュリティを評価することが重要です。
Some common techniques used to assess the security of emails include:
-
Email Spoofing: This technique involves forging the sender's email address to make it appear as if the email is coming from a different source. It can be used for phishing attacks or to bypass email filters.
-
Email Header Analysis: By analyzing the email headers, it is possible to gather information about the email's origin, route, and other details that can help in identifying any suspicious activity.
-
Email Content Analysis: Analyzing the content of the email can provide insights into the intentions and motives of the sender. It can also help in identifying any malicious attachments or links.
-
Email Server Misconfigurations: Misconfigurations in email servers can lead to security vulnerabilities. By identifying and exploiting these misconfigurations, an attacker can gain unauthorized access to the email system.
-
Email Password Cracking: If an attacker gains access to an email account, they may attempt to crack the password to gain further access or to impersonate the account owner.
These techniques can help in identifying and mitigating potential security risks associated with emails. It is important to regularly assess and update the security measures in place to protect against email-based attacks.
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
SNMP値の変更
_NetScanTools_を使用して値を変更することができます。そのためには、プライベートストリングを知る必要があります。
スプーフィング
SNMPサービスのクエリを許可するIPアドレスが制限されている場合、UDPパケット内のアドレスをスプーフィングしてトラフィックを嗅視することができます。
SNMP設定ファイルの調査
- snmp.conf
- snmpd.conf
- snmp-config.xml
HackTricks自動コマンド
Protocol_Name: SNMP #Protocol Abbreviation if there is one.
Port_Number: 161 #Comma separated if there is more than one.
Protocol_Description: Simple Network Managment Protocol #Protocol Abbreviation Spelled out
Entry_1:
Name: Notes
Description: Notes for SNMP
Note: |
SNMP - Simple Network Management Protocol is a protocol used to monitor different devices in the network (like routers, switches, printers, IoTs...).
https://book.hacktricks.xyz/pentesting/pentesting-snmp
Entry_2:
Name: SNMP Check
Description: Enumerate SNMP
Command: snmp-check {IP}
Entry_3:
Name: OneSixtyOne
Description: Crack SNMP passwords
Command: onesixtyone -c /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings-onesixtyone.txt {IP} -w 100
Entry_4:
Name: Nmap
Description: Nmap snmp (no brute)
Command: nmap --script "snmp* and not snmp-brute" {IP}
Entry_5:
Name: Hydra Brute Force
Description: Need Nothing
Command: hydra -P {Big_Passwordlist} -v {IP} snmp
バグバウンティのヒント: Intigritiにサインアップしてください。これは、ハッカーによって作成されたプレミアムなバグバウンティプラットフォームです!今すぐhttps://go.intigriti.com/hacktricksに参加して、最大**$100,000**の報酬を獲得しましょう!
{% embed url="https://go.intigriti.com/hacktricks" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、最新バージョンのPEASSを入手したいですか?または、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。これは、私たちの独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterで私をフォローしてください🐦@carlospolopm.
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。