Referência da API de gerenciamento de vulnerabilidades para sensores de monitoramento OT
- Artigo
Este artigo lista as APIs REST de gerenciamento de vulnerabilidades suportadas para sensores de monitoramento OT do Microsoft Defender for IoT.
Os dados incluídos nas respostas da API incluem as mesmas informações como se você gerasse um relatório de vulnerabilidade do console do sensor OT.
devices (Recuperar informações de vulnerabilidade do dispositivo)
Use esta API para solicitar resultados de avaliação de vulnerabilidade para cada dispositivo.
URI:/api/v1/reports/vulnerabilities/devices
GET
Esta API é chamada sem quaisquer parâmetros de solicitação.
Tipo: JSON
Matriz de objetos JSON que representam dispositivos avaliados e suas vulnerabilidades relatadas.
Os dispositivos que não apresentam vulnerabilidades não são incluídos na resposta ao resultado.
Campos do dispositivo
Nome | Tipo | Nulo / Não anulável | Lista de valores |
---|---|---|---|
Designação | Cadeia (de carateres) | Não anulável | - |
Endereços IP | Matriz JSON | Não anulável | - |
Pontuação de segurança | Numérico | Não anulável | - |
fornecedor | String | Pode ser nulo | |
firmwareVersão | String | Pode ser nulo | - |
modelo | String | Pode ser nulo | - |
isWirelessAccessPoint | Boolean | Não anulável | True ou False |
sistema operacional | Objeto do sistema operacional | Pode ser nulo | - |
vulnerabilidades | Objeto de vulnerabilidades | Não anulável | - |
Campos do sistema operacional
Nome | Tipo | Nulo / Não anulável | Lista de valores |
---|---|---|---|
Designação | Cadeia (de carateres) | Não anulável | - |
type | String | Não anulável | - |
Versão | Cadeia (de carateres) | Pode ser nulo | - |
versão mais recente | String | Pode ser nulo | - |
Campos de vulnerabilidades
Nome | Tipo | Nulo / Não anulável | Lista de valores |
---|---|---|---|
antivírus | Matriz JSON de cadeias de caracteres | Pode ser nulo | Nomes de antivírus |
plainTextPasswords | Matriz JSON | Pode ser nulo | Objetos de senha |
Acesso remoto | Matriz JSON | Pode ser nulo | Objetos de acesso remoto |
isBackupServer | Boolean | Não anulável | True ou False |
openPorts | Matriz JSON | Pode ser nulo | Objetos de porta abertos |
isEngineeringStation | Boolean | Não anulável | True ou False |
isKnownScanner | Boolean | Não anulável | True ou False |
CVES | Matriz JSON | Pode ser nulo | Objetos CVE |
isNão autorizado | Boolean | Não anulável | True ou False |
malwareIndicaçõesDetectado | Boolean | Não anulável | True ou False |
weakAuthentication | Matriz JSON de cadeias de caracteres | Pode ser nulo | Aplicativos detetados que estão usando autenticação fraca |
Campos de palavra-passe
Nome | Tipo | Nulo / Não anulável | Lista de valores |
---|---|---|---|
palavra-passe | String | Não anulável | - |
protocolo | String | Não anulável | - |
Força | String | Não anulável | Very weak , Weak , Medium , Strong |
Campos de acesso remoto
Nome | Type | Que podem ser nulos | Lista de valores |
---|---|---|---|
port | Numérico | Não anulável | - |
Transportes | String | Não anulável | TCP , UDP |
client | String | Não anulável | Endereço IP |
clienteSoftware | String | Não anulável | Nome do protocolo remoto, como SSH , VNC , Remote desktop , ou Team viewer |
Campos de porta aberta
Nome | Tipo | Nulo / Não anulável | Lista de valores |
---|---|---|---|
port | Numérico | Não anulável | - |
Transportes | String | Não anulável | TCP ou UDP |
protocolo | String | Pode ser nulo | - |
isConflictingWithFirewall | Boolean | Não anulável | True ou False |
Campos CVE
Nome | Tipo | Nulo / Não anulável | Lista de valores |
---|---|---|---|
id | String | Não anulável | - |
Pontuação | Valor numérico decimal | Não anulável | - |
descrição | String | Não anulável | - |
Exemplo de resposta
[
{
"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
}
}
]
Tipo: GET
API:
curl -k -H "Authorization: <AUTH_TOKEN>" https://<IP_ADDRESS>/api/v1/reports/vulnerabilities/devices
Exemplo:
curl -k -H "Authorization: 1234b734a9244d54ab8d40aedddcabcd" https://127.0.0.1/api/v1/reports/vulnerabilities/devices
segurança (Recuperar vulnerabilidades de segurança)
Use esta API para solicitar os resultados de um relatório geral de avaliação de vulnerabilidade. Esta avaliação fornece informações sobre o nível de segurança do seu sistema.
Esta avaliação baseia-se em informações gerais da rede e do sistema e não numa avaliação específica do dispositivo.
URI:/api/v1/reports/vulnerabilities/security
GET
Esta API é chamada sem quaisquer parâmetros de solicitação.
Tipo: representação JSON de uma ou mais tabelas de dados, cada uma com estruturas específicas e potencialmente diferentes.
A resposta é exibida em uma visualização de mapa, que mapeia os títulos das tabelas para as linhas da tabela. As linhas são representadas como uma lista de objetos com as mesmas estruturas.
campos unauthorizedDevices
Nome | Tipo | Nulo / Não anulável | Lista de valores |
---|---|---|---|
Endereço | String | Pode ser nulo | Endereço IP ou MAC do dispositivo não autorizado |
Designação | Cadeia (de carateres) | Pode ser nulo | Nome do dispositivo não autorizado |
firstDetectionTime | Numérico | Pode ser nulo | Timestamp o dispositivo foi detetado pela primeira vez, em milissegundos a partir da hora Epoch e no fuso horário UTC |
visto por último | Numérico | Pode ser nulo | Carimbo de data/hora em que o tráfego foi detetado pela última vez como enviado de ou para o dispositivo, em milissegundos a partir da hora Epoch e no fuso horário UTC |
campos illegalTrafficByFirewallRules
Nome | Tipo | Nulo / Não anulável | Lista de valores |
---|---|---|---|
servidor | String | Pode ser nulo | Endereço IP do servidor |
client | String | Pode ser nulo | Endereço IP do cliente |
port | Numérico | Pode ser nulo | A porta do servidor |
Transportes | String | Pode ser nulo | TCP , UDP ou ICMP |
campos weakFirewallRules
Nome | Tipo | Nulo / Não anulável | Lista de valores |
---|---|---|---|
Fontes | Matriz JSON de fontes | Pode ser nulo | Matriz JSON de fontes em qualquer um dos seguintes formatos: - Any - ip address (host) - from ip-to ip (RANGE) - ip address, subnet mask (NETWORK) |
Destinos | Matriz JSON de destinos | Pode ser nulo | Matriz JSON de objetos de destino, em qualquer um dos seguintes formatos: - Any - ip address (host) - from ip-to ip (RANGE) - ip address, subnet mask (NETWORK) |
portos | Matriz JSON de portas | Pode ser nulo | Matriz JSON de objetos de porta, em qualquer um dos seguintes formatos: - Any - port (protocol, if detected) - from port-to port (protocol, if detected) |
campos accessPoints
Nome | Tipo | Nulo / Não anulável | Lista de valores |
---|---|---|---|
MacEndereço | String | Pode ser nulo | O endereço MAC do ponto de acesso |
fornecedor | String | Pode ser nulo | O nome do fornecedor do ponto de acesso |
Endereço IP | String | Pode ser nulo | O endereço IP do ponto de acesso, ou N/A |
Designação | Cadeia (de carateres) | Pode ser nulo | O nome do dispositivo do ponto de acesso ou N/D |
sem fios | String | Pode ser nulo | Se o ponto de acesso está ligado a uma rede sem fios: No , Suspected ou Yes |
conexõesEntrecampos Sub-redes
Nome | Tipo | Nulo / Não anulável | Lista de valores |
---|---|---|---|
servidor | String | Pode ser nulo | O endereço IP do servidor |
client | String | Pode ser nulo | O endereço IP do cliente |
campos industrialMalwareIndicators
Nome | Tipo | Nulo / Não anulável | Lista de valores |
---|---|---|---|
detectionTime | Numérico | Pode ser nulo | Timestamp o malware foi detetado pela primeira vez, em milissegundos a partir da hora de Epoch e no fuso horário UTC |
alertaMensagem | String | Pode ser nulo | A mensagem de alerta enviada |
descrição | String | Pode ser nulo | A descrição da mensagem de alerta |
dispositivos | Matriz JSON | Não anulável | Uma matriz JSON de cadeias de caracteres que representam nomes de dispositivos |
campos internetConnections
Nome | Tipo | Nulo / Não anulável | Lista de valores |
---|---|---|---|
endereço interno | String | Pode ser nulo | O endereço IP interno da conexão |
autorizadas | Boolean | Pode ser nulo | Yes ou No |
endereços externos | Matriz JSON | Não anulável | Uma matriz JSON dos endereços IP externos da conexão |
Exemplo de resposta
{
"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"
}
]
}
Tipo: GET
APIs:
curl -k -H "Authorization: <AUTH_TOKEN>" https://<IP_ADDRESS>/api/v1/reports/vulnerabilities/security
Exemplo:
curl -k -H "Authorization: 1234b734a9244d54ab8d40aedddcabcd" https://127.0.0.1/api/v1/reports/vulnerabilities/security
operational (Recuperar vulnerabilidades operacionais)
Use esta API para solicitar os resultados de uma avaliação geral de vulnerabilidade. Essa avaliação fornece informações sobre o status operacional da sua rede. Baseia-se em informações gerais da rede e do sistema e não numa avaliação específica do dispositivo.
URI:/api/v1/reports/vulnerabilities/operational
GET
Esta API é chamada sem quaisquer parâmetros de solicitação.
Tipo: representação JSON de uma ou mais tabelas de dados, cada uma com estruturas específicas e potencialmente diferentes.
A resposta é exibida em uma visualização de mapa, que mapeia os títulos das tabelas para as linhas da tabela. As linhas são representadas como uma lista de objetos com as mesmas estruturas.
campos de resultado backupServer
Nome | Tipo | Nulo / Não anulável | Lista de valores |
---|---|---|---|
fonte | String | Pode ser nulo | O endereço IP de origem |
destino | String | Pode ser nulo | O endereço IP de destino |
port | Numérico | Pode ser nulo | A porta do servidor de backup |
Transportes | String | Pode ser nulo | O protocolo TCP de transporte do servidor de backup ou UDP |
backupMaximalInterval | String | Pode ser nulo | O tempo máximo de intervalo entre backups |
lastSeenBackup | Numérico | Pode ser nulo | Carimbo de data/hora que um backup foi visto pela última vez, em milissegundos da hora Epoch e no fuso horário UTC |
Campos de resultados ipNetworks
Nome | Tipo | Nulo / Não anulável | Lista de valores |
---|---|---|---|
endereços | Numérico | Não anulável | O número de endereços IP descobertos no intervalo de sub-rede. |
rede | String | Não anulável | O endereço IP base da sub-rede. |
máscara | String | Não anulável | A máscara de sub-rede. |
protocolCampos de resultado de problemas
Nome | Tipo | Nulo / Não anulável | Lista de valores |
---|---|---|---|
protocolo | String | Não anulável | Um protocolo para o qual um alerta de violação de protocolo foi acionado |
endereços | Matriz JSON de endereços IP | Não anulável | Matriz JSON de endereços IP onde a violação se originou |
alerta | String | Não anulável | O título do alerta acionado |
reportTime | Numérico | Não anulável | Carimbo de data/hora que um relatório foi gerado pela última vez, em milissegundos a partir da hora de Epoch e no fuso horário UTC |
campos de resultado protocolDataVolumes
Nome | Tipo | Nulo / Não anulável | Lista de valores |
---|---|---|---|
protocolo | String | Pode ser nulo | Um protocolo que foi detetado na rede pelo sensor de rede OT |
volume | String | Pode ser nulo | O volume de pacotes de protocolo capturados pelo sensor de rede OT, em MB |
Campos de resultado de desconexões
Nome | Tipo | Nulo / Não anulável | Lista de valores |
---|---|---|---|
assetAddress | String | Pode ser nulo | O endereço IP do ativo desconectado |
nome_do_ativo | String | Pode ser nulo | O nome do ativo desconectado |
lastDetectionTime | Numérico | Pode ser nulo | Carimbo de data/hora que a desconexão foi detetada pela última vez, em milissegundos a partir da hora Epoch e no fuso horário UTC |
voltarParaNormalTime | Numérico | Pode ser nulo | Carimbo de data/hora que a conexão retornou, em milissegundos da hora Epoch e no fuso horário UTC |
Exemplo de resposta
{
"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
}
]
}
Tipo: GET
APIs:
curl -k -H "Authorization: <AUTH_TOKEN>" https://<IP_ADDRESS>/api/v1/reports/vulnerabilities/operational
Exemplo:
curl -k -H "Authorization: 1234b734a9244d54ab8d40aedddcabcd" https://127.0.0.1/api/v1/reports/vulnerabilities/operational
mitigação (Recuperar etapas de mitigação)
Use essa API para solicitar uma avaliação de mitigação. Esta avaliação fornece etapas recomendadas para mitigar as vulnerabilidades detetadas. Baseia-se em informações gerais da rede e do sistema e não numa avaliação específica do dispositivo.
URI:/api/v1/reports/vulnerabilities/mitigation
GET
Esta API é chamada sem quaisquer parâmetros de solicitação.
Tipo: JSON
Objeto JSON que representa as etapas de mitigação recomendadas.
Campos de resposta
Nome do campo | Type | Que podem ser nulos | Lista de valores |
---|---|---|---|
Notificações | Matriz JSON de cadeias de caracteres | Não anulável | Etapas de mitigação recomendadas para vulnerabilidades detetadas |
Atenuação | Matriz JSON | Não anulável | Objetos de mitigação |
Campos de mitigação
Nome do campo | Type | Que podem ser nulos | Lista de valores |
---|---|---|---|
Conteúdo | String | Não anulável | Etapas de mitigação recomendadas para vulnerabilidades detetadas |
scoreMelhoria | Número inteiro | Pode ser nulo | Porcentagem esperada de melhoria de segurança após as medidas de mitigação serem tomadas. |
detalhes | Tabela | Pode ser nulo | Uma tabela com recomendações de mitigação, como as que seriam geradas no relatório de avaliação de riscos. Cada recomendação inclui detalhes sobre o possível impacto na segurança se a ação for executada e muito mais. Para obter mais informações, consulte Mitigação de riscos. |
Nota
Você pode ter várias etapas de mitigação, com algumas retornadas notifications
no campo e outras retornadas mitigation
no campo. Os itens com scoreImprovement
e details
dados são retornados somente no mitigation
campo. Itens sem scoreImprovement
e details
dados são retornados apenas no notifications
campo.
Exemplo de resposta
{
"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"
Próximos passos
Para obter mais informações, consulte a visão geral da referência da API do Defender for IoT.
Comentários
Esta página foi útil?