OT 監視センサーの脆弱性管理 API リファレンス
- [アーティクル]
この記事では、Microsoft Defender for IoT OT 監視センサーでサポートされている脆弱性管理 REST API を一覧で示します。
API 応答に含まれるデータには、オンプレミスの管理コンソールから脆弱性レポートを生成した場合と同様の情報が含まれます。
devices (デバイスの脆弱性情報の取得)
各デバイスの脆弱性評価の結果を要求するには、この API を使用します。
URI: /api/v1/reports/vulnerabilities/devices
GET
この API は、要求パラメーターなしで呼び出されます。
型: JSON
評価されたデバイスと報告された脆弱性を表す JSON オブジェクトの配列。
脆弱性がないことがわかったデバイスは、結果の応答には含まれません。
デバイス フィールド
名前 | Type | Null 許容 / Null 非許容 | [値の一覧] |
---|---|---|---|
name | String | NULL 値は許可されません | - |
ipAddresses | JSON 配列 | NULL 値は許可されません | - |
securityScore | 数値 | NULL 値は許可されません | - |
vendor | String | Nullable | |
firmwareVersion | String | Nullable | - |
model | String | Nullable | - |
isWirelessAccessPoint | ブール型 | NULL 値は許可されません |
True または False |
operatingSystem | オペレーティング システム オブジェクト | Nullable | - |
vulnerabilities | 脆弱性オブジェクト | NULL 値は許可されません | - |
オペレーティング システム フィールド
名前 | Type | Null 許容 / Null 非許容 | [値の一覧] |
---|---|---|---|
name | String | NULL 値は許可されません | - |
type | String | NULL 値は許可されません | - |
version | String | Nullable | - |
latestVersion | String | Nullable | - |
脆弱性フィールド
名前 | Type | Null 許容 / Null 非許容 | [値の一覧] |
---|---|---|---|
antiViruses | 文字列の JSON 配列 | Nullable | ウイルス対策の名前 |
plainTextPasswords | JSON 配列 | Nullable | パスワード オブジェクト |
remoteAccess | JSON 配列 | Nullable | リモート アクセス オブジェクト |
isBackupServer | ブール型 | NULL 値は許可されません |
True または False |
openedPorts | JSON 配列 | Nullable | オープンなポート オブジェクト |
isEngineeringStation | ブール型 | NULL 値は許可されません |
True または False |
isKnownScanner | ブール型 | NULL 値は許可されません |
True または False |
cves | JSON 配列 | Nullable | CVE オブジェクト |
isUnauthorized | ブール型 | NULL 値は許可されません |
True または False |
malwareIndicationsDetected | ブール型 | NULL 値は許可されません |
True または False |
weakAuthentication | 文字列の JSON 配列 | Nullable | 脆弱な認証を使用していることが検出されたアプリケーション |
パスワード フィールド
名前 | Type | Null 許容 / Null 非許容 | [値の一覧] |
---|---|---|---|
password | String | NULL 値は許可されません | - |
protocol | String | NULL 値は許可されません | - |
strength | String | NULL 値は許可されません |
Very weak , Weak , Medium , Strong |
リモート アクセス フィールド
名前 | Type | Nullable | [値の一覧] |
---|---|---|---|
port | 数値 | NULL 値は許可されません | - |
transport | String | NULL 値は許可されません |
TCP , UDP |
client | String | NULL 値は許可されません | IP アドレス |
clientSoftware | String | NULL 値は許可されません | リモート プロトコルの名前 (例: SSH 、VNC 、Remote desktop 、Team viewer ) |
オープンなポート フィールド
名前 | Type | Null 許容 / Null 非許容 | [値の一覧] |
---|---|---|---|
port | 数値 | NULL 値は許可されません | - |
transport | String | NULL 値は許可されません |
TCP または UDP |
protocol | String | Nullable | - |
isConflictingWithFirewall | ブール型 | NULL 値は許可されません |
True または False |
CVE フィールド
名前 | Type | Null 許容 / Null 非許容 | [値の一覧] |
---|---|---|---|
id | String | NULL 値は許可されません | - |
スコア | 数値 (10 進値) | NULL 値は許可されません | - |
description | String | NULL 値は許可されません | - |
応答の例
[
{
"name": "IED \#10",
"ipAddresses": ["10.2.1.10"],
"securityScore": 100,
"vendor": "ABB Switzerland Ltd, Power Systems",
"firmwareVersion": null,
"model": null,
"operatingSystem": {
"name": "ABB Switzerland Ltd, Power Systems",
"type": "abb",
"version": null,
"latestVersion": null
},
"vulnerabilities": {
"antiViruses": [
"McAfee"
],
"plainTextPasswords": [
{
"password": "123456",
"protocol": "HTTP",
"strength": "Very Weak"
}
],
"remoteAccess": [
{
"port": 5900,
"transport": "TCP",
"clientSoftware": "VNC",
"client": "10.2.1.20"
}
],
"isBackupServer": true,
"openedPorts": [
{
"port": 445,
"transport": "TCP",
"protocol": "SMP Over IP",
"isConflictingWithFirewall": false
},
{
"port": 80,
"transport": "TCP",
"protocol": "HTTP",
"isConflictingWithFirewall": false
}
],
"isEngineeringStation": false,
"isKnownScanner": false,
"cves": [
{
"id": "CVE-2015-6490",
"score": 10,
"description": "Frosty URL - Stack-based buffer overflow on Allen-Bradley MicroLogix 1100 devices before B FRN 15.000 and 1400 devices through B FRN 15.003 allows remote attackers to execute arbitrary code via unspecified vectors"
},
{
"id": "CVE-2012-6437",
"score": 10,
"description": "MicroLogix 1100 and 1400 do not properly perform authentication for Ethernet firmware updates, which allows remote attackers to execute arbitrary code via a Trojan horse update image"
},
{
"id": "CVE-2012-6440",
"score": 9.3,
"description": "MicroLogix 1100 and 1400 allows man-in-the-middle attackers to conduct replay attacks via HTTP traffic."
}
],
"isUnauthorized": false,
"malwareIndicationsDetected": true
}
}
]
型: GET
API:
curl -k -H "Authorization: <AUTH_TOKEN>" https://<IP_ADDRESS>/api/v1/reports/vulnerabilities/devices
例:
curl -k -H "Authorization: 1234b734a9244d54ab8d40aedddcabcd" https://127.0.0.1/api/v1/reports/vulnerabilities/devices
security (セキュリティの脆弱性の取得)
一般的な脆弱性評価レポートの結果を要求するには、この API を使用します。 この評価は、システムのセキュリティ レベルに関する分析情報を提供します。
この評価は、特定のデバイスの評価ではなく、一般的なネットワーク情報とシステム情報に基づいて行われます。
URI: /api/v1/reports/vulnerabilities/security
GET
この API は、要求パラメーターなしで呼び出されます。
型: 1 つ以上のデータ テーブルの JSON 表現。それぞれが固有の構造を持ち、相互に異なる可能性があります。
応答はマップ ビューに表示され、テーブル タイトルがテーブル行にマップされます。 行は、同じ構造を持つオブジェクトのリストとして表されます。
unauthorizedDevices フィールド
名前 | Type | Null 許容 / Null 非許容 | [値の一覧] |
---|---|---|---|
address | String | Nullable | 承認されていないデバイスの IP アドレスまたは MAC アドレス |
name | String | Nullable | 承認されていないデバイスの名前 |
firstDetectionTime | 数値 | Nullable | デバイスが最初に検出された時刻のタイムスタンプ (エポック時間からのミリ秒単位、UTC タイムゾーン) |
lastSeen | 数値 | Nullable | デバイスとの間で送受信されたトラフィックが最後に検出された時刻のタイムスタンプ (エポック時間からのミリ秒単位、UTC タイムゾーン) |
illegalTrafficByFirewallRules フィールド
名前 | Type | Null 許容 / Null 非許容 | [値の一覧] |
---|---|---|---|
server | String | Nullable | サーバーの IP アドレス |
client | String | Nullable | クライアント IP アドレス |
port | 数値 | Nullable | サーバー ポート |
transport | String | Nullable |
TCP 、 UDP 、または ICMP |
weakFirewallRules フィールド
名前 | Type | Null 許容 / Null 非許容 | [値の一覧] |
---|---|---|---|
sources | ソースの JSON 配列 | Nullable | ソースの JSON 配列。形式は次のいずれかです。 - Any - ip address (host) - from ip-to ip (RANGE) - ip address, subnet mask (NETWORK) |
destinations | 宛先の JSON 配列 | Nullable | 宛先オブジェクトの JSON 配列。形式は次のいずれかです。 - Any - ip address (host) - from ip-to ip (RANGE) - ip address, subnet mask (NETWORK) |
ports | ポートの JSON 配列 | Nullable | ポート オブジェクトの JSON 配列。形式は次のいずれかです。 - Any - port (protocol, if detected) - from port-to port (protocol, if detected) |
accessPoints フィールド
名前 | Type | Null 許容 / Null 非許容 | [値の一覧] |
---|---|---|---|
macAddress | String | Nullable | アクセス ポイントの MAC アドレス |
vendor | String | Nullable | アクセス ポイントのベンダー名 |
ipAddress | String | Nullable | アクセス ポイントの IP アドレス、または N/A |
name | String | Nullable | アクセス ポイントのデバイス名、または N/A |
wireless | String | Nullable | アクセス ポイントがワイヤレス ネットワークに接続されているかどうか。No 、Suspected 、または Yes |
connectionsBetweenSubnets フィールド
名前 | Type | Null 許容 / Null 非許容 | [値の一覧] |
---|---|---|---|
server | String | Nullable | サーバーの IP アドレス |
client | String | Nullable | クライアントの IP アドレス |
industrialMalwareIndicators フィールド
名前 | Type | Null 許容 / Null 非許容 | [値の一覧] |
---|---|---|---|
detectionTime | 数値 | Nullable | マルウェアが最初に検出された時刻のタイムスタンプ (エポック時間からのミリ秒単位、UTC タイムゾーン) |
alertMessage | String | Nullable | 送信されたアラート メッセージ |
description | String | Nullable | アラート メッセージの説明 |
devices | JSON 配列 | NULL 値は許可されません | デバイス名を表す文字列の JSON 配列 |
internetConnections フィールド
名前 | Type | Null 許容 / Null 非許容 | [値の一覧] |
---|---|---|---|
internalAddress | String | Nullable | 接続の内部 IP アドレス |
承認済み | ブール型 | Nullable |
Yes または No |
externalAddresses | JSON 配列 | NULL 値は許可されません | 接続の外部 IP アドレスの JSON 配列 |
応答の例
{
"unauthorizedDevices": [
{
"address": "10.2.1.14",
"name": "PLC \#14",
"firstDetectionTime": 1462645483000,
"lastSeen": 1462645495000,
}
],
"redundantFirewallRules": [
{
"sources": "170.39.3.0/255.255.255.0",
"destinations": "Any",
"ports": "102"
}
],
"connectionsBetweenSubnets": [
{
"server": "10.2.1.22",
"client": "170.39.2.0"
}
],
"industrialMalwareIndications": [
{
"detectionTime": 1462645483000,
"alertMessage": "Suspicion of Malicious Activity (Regin)",
"description": "Suspicious network activity was detected. Such behavior might be attributed to the Regin malware.",
"addresses": [
"10.2.1.4",
"10.2.1.5"
]
}
],
"illegalTrafficByFirewallRules": [
{
"server": "10.2.1.7",
"port": "20000",
"client": "10.2.1.4",
"transport": "TCP"
},
{
"server": "10.2.1.8",
"port": "20000",
"client": "10.2.1.4",
"transport": "TCP"
},
{
"server": "10.2.1.9",
"port": "20000",
"client": "10.2.1.4",
"transport": "TCP"
}
],
"internetConnections": [
{
"internalAddress": "10.2.1.1",
"authorized": "Yes",
"externalAddresses": ["10.2.1.2",”10.2.1.3”]
}
],
"accessPoints": [
{
"macAddress": "ec:08:6b:0f:1e:22",
"vendor": "TP-LINK TECHNOLOGIES",
"ipAddress": "173.194.112.22",
"name": "Enterprise AP",
"wireless": "Yes"
}
],
"weakFirewallRules": [
{
"sources": "170.39.3.0/255.255.255.0",
"destinations": "Any",
"ports": "102"
}
]
}
型: GET
API:
curl -k -H "Authorization: <AUTH_TOKEN>" https://<IP_ADDRESS>/api/v1/reports/vulnerabilities/security
例:
curl -k -H "Authorization: 1234b734a9244d54ab8d40aedddcabcd" https://127.0.0.1/api/v1/reports/vulnerabilities/security
operational (運用上の脆弱性の取得)
一般的な脆弱性評価の結果を要求するには、この API を使用します。 この評価により、ネットワークの動作状態に関する分析情報が得られます。 これは、特定のデバイスの評価ではなく、一般的なネットワーク情報とシステム情報に基づいて行われます。
URI: /api/v1/reports/vulnerabilities/operational
GET
この API は、要求パラメーターなしで呼び出されます。
型: 1 つ以上のデータ テーブルの JSON 表現。それぞれが固有の構造を持ち、相互に異なる可能性があります。
応答はマップ ビューに表示され、テーブル タイトルがテーブル行にマップされます。 行は、同じ構造を持つオブジェクトのリストとして表されます。
backupServer の結果フィールド
名前 | Type | Null 許容 / Null 非許容 | [値の一覧] |
---|---|---|---|
source | String | Nullable | 送信元 IP アドレス |
destination | String | Nullable | 送信先 IP アドレス |
port | 数値 | Nullable | バックアップ サーバーのポート |
transport | String | Nullable | バックアップ サーバーの転送プロトコル。TCP または UDP |
backupMaximalInterval | String | Nullable | バックアップ間の最大間隔時間 |
lastSeenBackup | 数値 | Nullable | バックアップが最後に参照された時刻のタイムスタンプ (エポック時刻からのミリ秒単位、UTC タイムゾーン) |
ipNetworks の結果フィールド
名前 | Type | Null 許容 / Null 非許容 | [値の一覧] |
---|---|---|---|
addresses | 数値 | NULL 値は許可されません | サブネット範囲で検出された IP アドレスの数。 |
network | String | NULL 値は許可されません | サブネットのベース IP アドレス。 |
mask | String | NULL 値は許可されません | サブネット マスクです。 |
protocolProblems の結果フィールド
名前 | Type | Null 許容 / Null 非許容 | [値の一覧] |
---|---|---|---|
protocol | String | NULL 値は許可されません | プロトコル違反アラートがトリガーされたプロトコル |
addresses | IP アドレスの JSON 配列 | NULL 値は許可されません | 違反が発生した IP アドレスの JSON 配列 |
alert | String | NULL 値は許可されません | トリガーされたアラートのタイトル |
reportTime | 数値 | NULL 値は許可されません | レポートが最後に生成された時刻のタイムスタンプ (エポック時刻からのミリ秒単位、UTC タイムゾーン) |
protocolDataVolumes の結果フィールド
名前 | Type | Null 許容 / Null 非許容 | [値の一覧] |
---|---|---|---|
protocol | String | Nullable | OT ネットワーク センサーによってネットワーク上で検出されたプロトコル |
volume | String | Nullable | OT ネットワーク センサーによってキャプチャされたプロトコル パケットの量 (MB 単位) |
disconnections の結果フィールド
名前 | Type | Null 許容 / Null 非許容 | [値の一覧] |
---|---|---|---|
assetAddress | String | Nullable | 切断されたアセットの IP アドレス |
assetName | String | Nullable | 切断されたアセットの名前 |
lastDetectionTime | 数値 | Nullable | 切断が最後に検出された時刻のタイムスタンプ (エポック時刻からのミリ秒単位、UTC タイムゾーン) |
backToNormalTime | 数値 | Nullable | 接続が戻った時刻のタイムスタンプ (エポック時刻からのミリ秒単位、UTC タイムゾーン) |
応答の例
{
"backupServer": [
{
"backupMaximalInterval": "1 Hour, 29 Minutes",
"source": "10.2.1.22",
"destination": "170.39.2.14",
"port": 10000,
"transport": "TCP",
"lastSeenBackup": 1462645483000
}
],
"ipNetworks": [
{
"addresses": "21",
"network": "10.2.1.0",
"mask": "255.255.255.0"
},
{
"addresses": "3",
"network": "170.39.2.0",
"mask": "255.255.255.0"
}
],
"protocolProblems": [
{
"protocol": "DNP3",
"addresses": [
"10.2.1.7",
"10.2.1.8"
],
"alert": "Illegal DNP3 Operation",
"reportTime": 1462645483000
},
{
"protocol": "DNP3",
"addresses": [
"10.2.1.15"
],
"alert": "Master Requested an Application Layer Confirmation",
"reportTime": 1462645483000
}
],
"protocolDataVolumes": [
{
"protocol": "MODBUS (502)",
"volume": "21.07 MB"
},
{
"protocol": "SSH (22)",
"volume": "0.001 MB"
}
],
"disconnections": [
{
"assetAddress": "10.2.1.3",
"assetName": "PLC \#3",
"lastDetectionTime": 1462645483000,
"backToNormalTime": 1462645484000
}
]
}
型: GET
API:
curl -k -H "Authorization: <AUTH_TOKEN>" https://<IP_ADDRESS>/api/v1/reports/vulnerabilities/operational
例:
curl -k -H "Authorization: 1234b734a9244d54ab8d40aedddcabcd" https://127.0.0.1/api/v1/reports/vulnerabilities/operational
mitigation (軽減策の手順の取得)
この API を使用して、軽減策の評価を要求します。 この評価では、検出された脆弱性を軽減するための推奨される手順が提供されます。 これは、特定のデバイスの評価ではなく、一般的なネットワーク情報とシステム情報に基づいて行われます。
URI: /api/v1/reports/vulnerabilities/mitigation
GET
この API は、要求パラメーターなしで呼び出されます。
型: JSON
推奨される軽減手順を表す JSON オブジェクト。
応答フィールド
フィールド名 | Type | Nullable | [値の一覧] |
---|---|---|---|
通知 | 文字列の JSON 配列 | NULL 値は許可されません | 検出された脆弱性に対して推奨される軽減手順 |
mitigation | JSON 配列 | NULL 値は許可されません | mitigation オブジェクト |
mitigation フィールド
フィールド名 | Type | Nullable | [値の一覧] |
---|---|---|---|
content | String | NULL 値は許可されません | 検出された脆弱性に対して推奨される軽減手順 |
scoreImprovement | Integer | Nullable | 軽減手順の実行後に予想されるセキュリティ改善率。 |
詳細 | テーブル | Nullable | 軽減策についての推奨事項を示す表 (リスク評価レポートで生成されるものなど)。 各推奨事項には、アクションが実行された場合のセキュリティへの影響の詳細などが含まれます。 詳しくは、リスク軽減に関する記事をご覧ください。 |
注意
複数の軽減手順がある場合は、一部が notifications
フィールドで返され、その他が mitigation
フィールドで返される場合があります。
scoreImprovement
データと details
データがある項目は、mitigation
フィールドでのみ返されます。
scoreImprovement
データと details
データがない項目は、notifications
フィールドでのみ返されます。
応答の例
{
"notifications": ["Firewall policy import", "Marking \"important devices\"", "Further device information import"],
"mitigation": [{
"content": "Install an Antivirus solution to increase protection of the workstations",
"details": null,
"scoreImprovement": 10
}, {
"content": "Investigate all malware indicators (Contact your incident response team or support.microsoft.com). When assured the problem is solved, acknowledge the alert",
"details": {
"name": "",
"description": {
"name": "",
"important": false,
"warning": false
},
"headers": ["Detection Time", "Alert Message", "Description", "Devices"],
"rows": [
["03/10/2022 07:10:24", "Address Scan Detected", "Address scan detected.\nScanning address: 10.10.10.22\nScanned subnet: 10.11.0.0/16\nScanned addresses: 10.11.1.1, 10.11.20.1, 10.11.20.10, 10.11.20.100, 10.11.20.2, 10.11.20.3, 10.11.20.4, 10.11.20.5, 10.11.20.6, 10.11.20.7...\nIt is recommended to notify the security officer of the incident.", ""],
]
},
"scoreImprovement": 8
}, {
"content": "Install a backup server in the network",
"details": null,
"scoreImprovement": 5
}, {
"content": "Install latest security updates (Devices: 2)",
"details": {
"name": "",
"description": {
"name": "",
"important": false,
"warning": false
},
"headers": ["Name", "Address"],
"rows": [
["10.13.10.5", "10.13.10.5"],
["192.168.1.127", "192.168.1.127"]
]
},
"scoreImprovement": 2
}, {
"content": "Increase password complexity for authentication (Devices: 53)",
"details": {
"name": "",
"description": {
"name": "",
"important": false,
"warning": false
},
"headers": ["Name", "Address"],
"rows": [
["10.10.10.13", "10.10.10.13"],
["10.10.10.14", "10.10.10.14"],
["10.10.10.15", "10.10.10.15"],
["10.13.10.3", "10.13.10.3"],
["10.13.10.40", "10.13.10.40"],
["10.13.10.5", "10.13.10.5"],
["10.13.11.2", "10.13.11.2"],
["10.13.11.3", "10.13.11.3"],
["192.168.1.100", "192.168.1.100"],
["192.168.1.242", "192.168.1.242"]
]
},
"scoreImprovement": 2
}, {
"content": "Investigate and acknowledge all unacknowledge alerts",
"details": {
"name": "",
"description": {
"name": "",
"important": false,
"warning": false
},
"headers": ["Detection Time", "Alert Message", "Description"],
"rows": [
["03/10/2022 07:10:24", "Address Scan Detected", "Address scan detected.\nScanning address: 10.10.10.22\nScanned subnet: 10.11.0.0/16\nScanned addresses: 10.11.1.1, 10.11.20.1, 10.11.20.10, 10.11.20.100, 10.11.20.2, 10.11.20.3, 10.11.20.4, 10.11.20.5, 10.11.20.6, 10.11.20.7...\nIt is recommended to notify the security officer of the incident."],
["03/10/2022 07:44:52", "No Traffic Detected on Sensor Interface", "The sensor stopped detecting network traffic on local_listener."]
]
},
"scoreImprovement": 1
}]
}
curl -k -H "Authorization: 1234b734a9244d54ab8d40aedddcabcd" "https://<IP address>/api/v1/reports/vulnerabilities/mitigation"
次のステップ
詳細については、Defender for IoT API リファレンスの概要に関するページを参照してください。
フィードバック
このページはお役に立ちましたか?