OT 모니터링 센서에 대한 취약성 관리 API 참조
- 아티클
이 문서에는 Microsoft Defender for IoT OT 모니터링 센서를 지원하는 취약성 관리 REST API가 나와 있습니다.
API 응답에 포함된 데이터에는 OT 센서 콘솔에서 취약성 보고서를 생성한 것과 동일한 정보가 포함됩니다.
devices(디바이스 취약성 정보 검색)
이 API를 사용하여 각 디바이스에 대한 취약성 평가 결과를 요청합니다.
URI: /api/v1/reports/vulnerabilities/devices
GET
이 API는 요청 매개 변수 없이 호출됩니다.
형식: JSON
평가된 디바이스 및 보고된 취약성을 나타내는 JSON 개체의 배열입니다.
취약성이 없는 것으로 확인된 디바이스는 결과 응답에 포함되지 않습니다.
디바이스 필드
속성 | Type | null 허용/null 허용 안 함 | 값 목록 |
---|---|---|---|
이름 | 문자열 | nullable이 아님 | - |
ipAddresses | JSON 배열 | nullable이 아님 | - |
securityScore | 숫자 | nullable이 아님 | - |
공급업체 | 문자열 | Nullable | |
firmwareVersion | 문자열 | Nullable | - |
model | 문자열 | Nullable | - |
isWirelessAccessPoint | Boolean | nullable이 아님 | True 또는 False |
operatingSystem | 운영 체제 개체 | Nullable | - |
취약성 | Vulnerabilities 개체 | nullable이 아님 | - |
운영 체제 필드
속성 | Type | null 허용/null 허용 안 함 | 값 목록 |
---|---|---|---|
이름 | 문자열 | nullable이 아님 | - |
type | 문자열 | nullable이 아님 | - |
version | 문자열 | Nullable | - |
latestVersion | 문자열 | Nullable | - |
취약성 필드
속성 | Type | null 허용/null 허용 안 함 | 값 목록 |
---|---|---|---|
바이러스 백신 | 문자열의 JSON 배열 | Nullable | 바이러스 백신 이름 |
plainTextPasswords | JSON 배열 | Nullable | 암호 개체 |
remoteAccess | JSON 배열 | Nullable | 원격 액세스 개체 |
isBackupServer | Boolean | nullable이 아님 | True 또는 False |
openedPorts | JSON 배열 | Nullable | 열린 포트 개체 |
isEngineeringStation | Boolean | nullable이 아님 | True 또는 False |
isKnownScanner | Boolean | nullable이 아님 | True 또는 False |
cves | JSON 배열 | Nullable | CVE 개체 |
isUnauthorized | Boolean | nullable이 아님 | True 또는 False |
malwareIndicationsDetected | Boolean | nullable이 아님 | True 또는 False |
weakAuthentication | 문자열의 JSON 배열 | Nullable | 약한 인증을 사용하는 감지된 애플리케이션 |
암호 필드
속성 | Type | null 허용/null 허용 안 함 | 값 목록 |
---|---|---|---|
password | 문자열 | nullable이 아님 | - |
protocol | 문자열 | nullable이 아님 | - |
힘 | 문자열 | nullable이 아님 | Very weak , Weak , Medium Strong |
원격 액세스 필드
속성 | Type | Nullable | 값 목록 |
---|---|---|---|
port | 숫자 | nullable이 아님 | - |
전송 | 문자열 | nullable이 아님 | TCP , UDP |
client | 문자열 | nullable이 아님 | IP 주소 |
클라이언트 소프트웨어 | 문자열 | nullable이 아님 | 원격 프로토콜의 이름(예: SSH , VNC , Remote desktop 또는 Team viewer ) |
포트 필드 열기
속성 | Type | null 허용/null 허용 안 함 | 값 목록 |
---|---|---|---|
port | 숫자 | nullable이 아님 | - |
전송 | 문자열 | nullable이 아님 | TCP 또는 UDP |
protocol | 문자열 | Nullable | - |
isConflictingWithFirewall | Boolean | nullable이 아님 | True 또는 False |
CVE 필드
속성 | Type | null 허용/null 허용 안 함 | 값 목록 |
---|---|---|---|
id | 문자열 | nullable이 아님 | - |
점수 | 숫자, 10진수 값 | nullable이 아님 | - |
description | 문자열 | nullable이 아님 | - |
응답 예제
[
{
"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는 요청 매개 변수 없이 호출됩니다.
형식: 하나 이상 데이터 테이블의 JSON 표현이며, 각각 특정 구조와 잠재적으로 다른 구조를 포함합니다.
응답은 테이블 제목을 테이블 행에 매핑하는 맵 뷰에 표시됩니다. 행은 구조가 동일한 개체 목록으로 표시됩니다.
unauthorizedDevices 필드
속성 | Type | null 허용/null 허용 안 함 | 값 목록 |
---|---|---|---|
address | 문자열 | Nullable | 권한 없는 디바이스의 IP 또는 MAC 주소 |
이름 | 문자열 | Nullable | 권한 없는 디바이스의 이름 |
firstDetectionTime | 숫자 | Nullable | Epoch 시간 및 UTC 표준 시간대에서 디바이스가 처음 검색된 타임스탬프(밀리초) |
lastSeen | 숫자 | Nullable | Epoch 시간 및 UTC 표준 시간대에서 트래픽이 디바이스에서 보내고 받은 것으로 마지막으로 검색된 타임스탬프(밀리초) |
illegalTrafficByFirewallRules 필드
속성 | Type | null 허용/null 허용 안 함 | 값 목록 |
---|---|---|---|
server | 문자열 | Nullable | 서버 IP 주소 |
client | 문자열 | Nullable | 클라이언트 IP 주소 |
port | 숫자 | Nullable | 서버 포트 |
전송 | 문자열 | 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) |
목적지 | 대상의 JSON 배열 | Nullable | 다음 형식 중에서 대상 개체의 JSON 배열입니다. - Any - ip address (host) - from ip-to ip (RANGE) - ip address, subnet mask (NETWORK) |
포트 | 포트의 JSON 배열 | Nullable | 다음 형식 중에서 포트 개체의 JSON 배열입니다. - Any - port (protocol, if detected) - from port-to port (protocol, if detected) |
accessPoints 필드
속성 | Type | null 허용/null 허용 안 함 | 값 목록 |
---|---|---|---|
macAddress | 문자열 | Nullable | 액세스 지점의 MAC 주소 |
공급업체 | 문자열 | Nullable | 액세스 지점의 공급업체 이름 |
ipAddress | 문자열 | Nullable | 액세스 지점의 IP 주소 또는 N/A |
이름 | 문자열 | Nullable | 액세스 지점의 디바이스 이름 또는 N/A |
무선 | 문자열 | Nullable | 액세스 지점이 무선 네트워크에 연결되어 있는지 여부: No , Suspected 또는 Yes |
connectionsBetweenSubnets 필드
속성 | Type | null 허용/null 허용 안 함 | 값 목록 |
---|---|---|---|
server | 문자열 | Nullable | 서버의 IP 주소 |
client | 문자열 | Nullable | 클라이언트의 IP 주소 |
industrialMalwareIndicators 필드
속성 | Type | null 허용/null 허용 안 함 | 값 목록 |
---|---|---|---|
detectionTime | 숫자 | Nullable | Epoch 시간 및 UTC 표준 시간대에서 맬웨어가 처음 검색된 타임스탬프(밀리초) |
alertMessage | 문자열 | Nullable | 전송된 경고 메시지 |
description | 문자열 | Nullable | 경고 메시지 설명 |
장치 | JSON 배열 | nullable이 아님 | 디바이스 이름을 나타내는 문자열의 JSON 배열 |
internetConnections 필드
속성 | Type | null 허용/null 허용 안 함 | 값 목록 |
---|---|---|---|
internalAddress | 문자열 | Nullable | 연결의 내부 IP 주소 |
권한을 부여받은 | Boolean | Nullable | Yes 또는 No |
externalAddresses | JSON 배열 | nullable이 아님 | 연결 외부 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
APIs:
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는 요청 매개 변수 없이 호출됩니다.
형식: 하나 이상 데이터 테이블의 JSON 표현이며, 각각 특정 구조와 잠재적으로 다른 구조를 포함합니다.
응답은 테이블 제목을 테이블 행에 매핑하는 맵 뷰에 표시됩니다. 행은 구조가 동일한 개체 목록으로 표시됩니다.
backupServer 결과 필드
속성 | Type | null 허용/null 허용 안 함 | 값 목록 |
---|---|---|---|
source | 문자열 | Nullable | 원본 IP 주소 |
destination | 문자열 | Nullable | 대상 IP 주소 |
port | 숫자 | Nullable | 백업 서버 포트 |
전송 | 문자열 | Nullable | 백업 서버 전송 프로토콜 TCP 또는 UDP |
backupMaximalInterval | 문자열 | Nullable | 백업 간 최대 간격 시간 |
lastSeenBackup | 숫자 | Nullable | Epoch 시간 및 UTC 표준 시간대에서 백업이 마지막으로 표시된 타임스탬프(밀리초) |
ipNetworks 결과 필드
속성 | Type | null 허용/null 허용 안 함 | 값 목록 |
---|---|---|---|
주소 | 숫자 | nullable이 아님 | 서브넷 범위에서 검색된 IP 주소 수입니다. |
network | 문자열 | nullable이 아님 | 서브넷 기본 IP 주소입니다. |
마스크 | 문자열 | nullable이 아님 | 서브넷 마스크입니다. |
protocolProblems 결과 필드
속성 | Type | null 허용/null 허용 안 함 | 값 목록 |
---|---|---|---|
protocol | 문자열 | nullable이 아님 | 프로토콜 위반 경고가 트리거된 프로토콜 |
주소 | IP 주소의 JSON 배열 | nullable이 아님 | 위반이 발생한 IP 주소의 JSON 배열 |
경고 | 문자열 | nullable이 아님 | 트리거된 경고의 제목 |
reportTime | 숫자 | nullable이 아님 | Epoch 시간 및 UTC 표준 시간대에서 보고서가 마지막으로 생성된 타임스탬프(밀리초) |
protocolDataVolumes 결과 필드
속성 | Type | null 허용/null 허용 안 함 | 값 목록 |
---|---|---|---|
protocol | 문자열 | Nullable | OT 네트워크 센서에 의해 네트워크에서 검색된 프로토콜 |
volume | 문자열 | Nullable | OT 네트워크 센서에서 캡처한 프로토콜 패킷의 볼륨(MB) |
disconnections 결과 필드
속성 | Type | null 허용/null 허용 안 함 | 값 목록 |
---|---|---|---|
assetAddress | 문자열 | Nullable | 연결이 끊긴 자산의 IP 주소 |
assetName | 문자열 | Nullable | 연결이 끊긴 자산의 이름 |
lastDetectionTime | 숫자 | Nullable | Epoch 시간 및 UTC 표준 시간대에서 연결 끊김이 마지막으로 검색된 타임스탬프(밀리초) |
backToNormalTime | 숫자 | Nullable | Epoch 시간 및 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
APIs:
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 배열 | nullable이 아님 | 검색된 취약성에 대한 권장 임시 조치 단계 |
mitigation | JSON 배열 | nullable이 아님 | mitigation 개체 |
mitigation 필드
필드 이름 | Type | Nullable | 값 목록 |
---|---|---|---|
content | 문자열 | nullable이 아님 | 검색된 취약성에 대한 권장 임시 조치 단계 |
scoreImprovement | 정수 | Nullable | 임시 조치 단계를 수행한 후 예상되는 보안 개선 비율입니다. |
details | 테이블 | 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 참조 개요를 참조하세요.
피드백
이 페이지가 도움이 되었나요?