一、微步在线接口说明
针对入站场景的IP进行分析, 能够提供IP的地理位置、ASN信息,通过判定规则精准判别IP是否恶意、风险严重级别、可信度级别;识别威胁类型,如:漏洞利用(exploit)、傀儡机(Zombie)、代理(Proxy)、可疑(Suspicious)等及相关安全事件或团伙标签。
个人账号可以提供50次/天的权限。
二、官方示例
import requests
url = "https://api.threatbook.cn/v3/scene/ip_reputation"
query = {
"apikey":"请替换apikey",
"resource":"159.203.93.255"
}
response = requests.request("GET", url, params=query)
print(response.json())
三、自动化查询IP情报信息
在做网络安全运营时,经常遇到IP来探测、攻击,除了分析研判该IP的行为外,还需要借助互联网情报中心进行查询该IP的情报,单个IP的查询稍微简单一些,直接登陆情报中心网站查询即可,但是批量查询的时候就需要用到自动化查询程序。
以下是我根据微步在线的免费API开发的批量查询脚本,不是专业程序员,仅实现功能。
import requests
from openpyxl import load_workbook
from openpyxl.styles import Font
url = "https://api.threatbook.cn/v3/scene/ip_reputation"
#将字符串转换成列表
def str_to_list(query_ips_str):
query_ips_list = query_ips_str.split(',')
return query_ips_list
#将查询的结果写到excel文件中
def write_into_excel(i, query_ip, sec_level, is_malicious, confidence_level, location, judgments):
#length 查询IP列表的长度
#sec_level 风险等级
#is_malicious 是否恶意IP
#confidence_level 可信度
#judgments 威胁类型
#location IP归属地
#将查询结果记录在excel表中
file = "file_path"
wb1 = load_workbook(filename=file)
ws1 = wb1['Sheet1']
ws1["A{}".format(i)].value = query_ip
ws1["B{}".format(i)].value = sec_level
#如果是高风险IP就标红
if ws1["B{}".format(i)].value == "high":
font = Font(bold=True, color='9c0006')
ws1.cell(row=i, column=2, value="high").font = font
ws1["C{}".format(i)].value = is_malicious
ws1["D{}".format(i)].value = confidence_level
ws1["E{}".format(i)].value = judgments
ws1["F{}".format(i)].value = location
wb1.save(filename=file)
#通过接口查询IP相关信息
def get_ip_info(query_ips_list):
length = len(query_ips_list)
for i in range(length):
query_ip = query_ips_list[i]
query = {
"apikey":"Your apiKey",
"resource": query_ip
}
response = requests.request("GET", url, params=query)
get_result = response.json()
#查风险等级
sec_level = get_result['data']['{}'.format(query_ip)]['severity']
#查是否恶意IP
is_malicious = get_result['data']['{}'.format(query_ip)]['is_malicious']
#查可信度
confidence_level = get_result['data']['{}'.format(query_ip)]['confidence_level']
#查IP归属国家
country = get_result['data']['{}'.format(query_ip)]['basic']['location']['country']
#查IP归属省份
province = get_result['data']['{}'.format(query_ip)]['basic']['location']['province']
#查IP归属城市
city = get_result['data']['{}'.format(query_ip)]['basic']['location']['city']
#将IP归属的国家、省份、城市合并成一个字符串
location = country + '-' + province + '-' + city
#查威胁类型
judgments = get_result['data']['{}'.format(query_ip)]['judgments']
judgments = str(judgments)
location = str(location)
#调用写excel函数将查询结果写到excel表格中
write_into_excel(i+2, query_ip, sec_level, is_malicious, confidence_level, location, judgments)
if __name__ == '__main__':
query_ips_str = input("请输入需要查询的IP(1.1.1.1,2.2.2.2): ")
query_ips_list = str_to_list(query_ips_str)
get_ip_info(query_ips_list)
本文转载自: https://blog.csdn.net/u013930899/article/details/125607736
版权归原作者 見贤思齊 所有, 如有侵权,请联系我们删除。
版权归原作者 見贤思齊 所有, 如有侵权,请联系我们删除。