0


使用python调用微步在线接口实现自动化查询IP情报

一、微步在线接口说明

    针对入站场景的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
版权归原作者 見贤思齊 所有, 如有侵权,请联系我们删除。

“使用python调用微步在线接口实现自动化查询IP情报”的评论:

还没有评论