VulnCheck IP 인텔리전스는 초기 침투 익스플로잇의 표적이 될 수 있는 잠재적으로 취약한 시스템뿐만 아니라 명령 및 제어(C2) 공격자 인프라와 허니팟을 추적합니다.
VulnCheck IP 인텔리전스는 다양한 사용 사례를 지원합니다.
두 가지 API 쿼리 매개변수(국가와 ID)를 조합하여 특정 지역, 이 경우 스웨덴에서 명령 및 제어(C2) 탐지를 빠르게 조회할 수 있습니다.
curl --request GET --url https://api.vulncheck.com/v3/index/ipintel-3d?id=c2&country=Sweden --header 'Accept: application/json' --header 'Authorization: Bearer insert_token_here'
package main
import (
"context"
"encoding/json"
"fmt"
"log"
"os"
vulncheck "github.com/vulncheck-oss/sdk-go-v2/v2"
)
func main() {
configuration := vulncheck.NewConfiguration()
configuration.Scheme = "https"
configuration.Host = "api.vulncheck.com"
client := vulncheck.NewAPIClient(configuration)
token := os.Getenv("VULNCHECK_API_TOKEN")
auth := context.WithValue(
context.Background(),
vulncheck.ContextAPIKeys,
map[string]vulncheck.APIKey{
"Bearer": {Key: token},
},
)
resp, httpRes, err := client.IndicesAPI.IndexIpintel3dGet(auth).Country("Sweden").Id("c2").Execute()
if err != nil || httpRes.StatusCode != 200 {
log.Fatal(err)
}
prettyJSON, err := json.MarshalIndent(resp.Data, "", " ")
if err != nil {
log.Fatalf("Failed to generate JSON: %v", err)
return
}
fmt.Println(string(prettyJSON))
}
import vulncheck_sdk
configuration = vulncheck_sdk.Configuration(host="https://api.vulncheck.com/v3")
configuration.api_key["Bearer"] = "insert_token_here"
with vulncheck_sdk.ApiClient(configuration) as api_client:
indices_client = vulncheck_sdk.IndicesApi(api_client)
api_response = indices_client.index_ipintel3d_get(id="c2", country="Sweden")
print(api_response)
vulncheck index browse ipintel-3d --id c2 --country Sweden
유효한 국가를 사용하여 /v3/index/ipintel-3d?id=c2&country=:country API 엔드포인트를 호출하면 아래와 유사한 응답이 반환됩니다.
{
"_benchmark": 0.04378,
"_meta": {
"timestamp": "2025-10-27T23:18:59.172188696Z",
"index": "ipintel-3d",
//...
},
"data": [
{
"ip": "46.22.115.147",
"port": 443,
"ssl": true,
"lastSeen": "2025-10-27T07:55:47.459042",
"asn": "AS43853",
"country": "Sweden",
"country_code": "SE",
"city": "Huddinge",
"cve": [],
"matches": [
"SoftEther"
],
"hostnames": [
"46-22-115-147.ip.axbyte.se"
],
"type": {
"id": "c2",
"kind": "Proxy",
"finding": "command and control infrastructure"
},
"feed_ids": [
"a93a3bdd-c625-4128-a15b-e99e2ca93d62"
],
"_timestamp": "2025-10-27T09:05:50.858661971Z"
},
{
"ip": "185.232.44.180",
"port": 443,
"ssl": true,
"lastSeen": "2025-10-27T07:24:52.904576",
"asn": "AS209209",
"country": "Sweden",
"country_code": "SE",
"city": "Västerås",
"cve": [],
"matches": [
"Interactsh"
],
"hostnames": [],
"type": {
"id": "c2",
"kind": "Attack Infrastructure",
"finding": "command and control infrastructure"
},
"feed_ids": [
"7f6bc0e7-8064-40f8-b7d4-c4ebc17cf997"
],
"_timestamp": "2025-10-27T09:04:42.629323571Z"
},
//...
]
}
VulnCheck IP 인텔리전스는 다양한 API 쿼리 매개변수를 통해 IP 데이터 세트를 쉽게 조회할 수 있으며, 결과를 필터링하는 데 유용합니다. 지원되는 API 쿼리 매개변수는 다음과 같습니다:
| 쿼리 매개변수 | 설명 |
|---|---|
| asn | ASN 기반 필터링: 예시, "AS719" |
| cidr | IP 주소 또는 범위 기반 필터링: 예시, "165.227.231.125" |
| country | 국가 이름 기반 필터링: 예시, "Australia" |
| country_code | 국가 코드 기반 필터링: 예시, "AU" |
| hostname | 키워드 또는 FQDN 기반 필터링: 예시, "google" 또는 "amazonaws.com" |
| id | 지원되는 탐지 유형 기반 필터링: 예시, "c2", "honeypot", 또는 "initial-access" |
| 오프라인 백업 | 설명 |
|---|---|
| ipintel-3d | 최근 3일간의 IP 인텔리전스 탐지 |
| ipintel-10d | 최근 10일간의 IP 인텔리전스 탐지 |
| ipintel-30d | 최근 30일간의 IP 인텔리전스 탐지 |
| ipintel-90d | 최근 90일간의 IP 인텔리전스 탐지 |
특정 오프라인 백업을 요청하려면, 아래와 같이 /v3/backup/:index 엔드포인트를 호출하면 됩니다 (ipintel-3d 예시):
curl --request GET --url https://api.vulncheck.com/v3/backup/ipintel-3d --header 'Accept: application/json' --header 'Authorization: Bearer insert_token_here'
package main
import (
"context"
"encoding/json"
"fmt"
"log"
"os"
vulncheck "github.com/vulncheck-oss/sdk-go-v2/v2"
)
func main() {
configuration := vulncheck.NewConfiguration()
configuration.Scheme = "https"
configuration.Host = "api.vulncheck.com"
client := vulncheck.NewAPIClient(configuration)
token := os.Getenv("VULNCHECK_API_TOKEN")
auth := context.WithValue(
context.Background(),
vulncheck.ContextAPIKeys,
map[string]vulncheck.APIKey{
"Bearer": {Key: token},
},
)
resp, httpRes, err := client.EndpointsAPI.BackupIndexGet(auth, "ipintel-3d").Execute()
if err != nil || httpRes.StatusCode != 200 {
log.Fatal(err)
}
prettyJSON, err := json.MarshalIndent(resp.Data, "", " ")
if err != nil {
log.Fatalf("Failed to generate JSON: %v", err)
return
}
fmt.Println(string(prettyJSON))
}
import vulncheck_sdk
configuration = vulncheck_sdk.Configuration(host="https://api.vulncheck.com/v3")
configuration.api_key["Bearer"] = "insert_token_here"
with vulncheck_sdk.ApiClient(configuration) as api_client:
endpoints_client = vulncheck_sdk.EndpointsApi(api_client)
api_response = endpoints_client.backup_index_get("ipintel-3d")
print(api_response.data[0].url)
vulncheck backup download ipintel-3d
| Attribute | 의미 |
|---|---|
| ip | 호스트의 IP 주소 |
| port | 호스트가 접근 가능한 포트 |
| ssl | |
| lastSeen | 해당 레코드가 마지막으로 관찰된 시간 |
| asn | 해당 IP 주소와 연관된 ASN |
| country | 해당 IP 주소와 연관된 국가 |
| country code | 해당 IP 주소와 연관된 국가 코드 |
| city | 해당 IP 주소와 연관된 도시 |
| cve | 호스트와 연관된 CVE 목록 |
| matches | ID와 관련된 이름 또는 식별자를 나타냅니다. 예: ID가 honeypot일 때 ‘Confluence Honeypot’, ID가 initial-access일 때 취약점 이름 |
| hostnames | IP 주소의 역방향 DNS 조회 결과 |
| feed_ids | 해당 탐지를 일으킨 피드 내 규칙을 나타냄 |
| _timestamp | 레코드가 마지막으로 수정된 시간 |
| Attribute | 속성 |
|---|---|
| id | IP 인텔리전스의 출처 (예: initial-access, proxy, c2, ics, vulncheck-canaries) |
| kind | ID가 c2일 때 C2 또는 C2 Proxy를 식별 (예: Proxy, C2, Attack Infrastructure, Scanner) |
| finding | 잠재적 취약성, 프록시, 허니팟, C2 인프라, 웹 애플리케이션 공격, ICS, 네트워크 스캔 탐지, 잠재적 악성 트래픽 등 |