当前位置: 首页 > news >正文

【蓝队技能】【Python规则开发】文件分析微步在线推送文件变化监控流量分析

蓝队技能


Python-文件分析&微步在线推送&文件变化监控&流量分析

  • 蓝队技能
  • 总结
  • 前言
  • 一、开发所需知识库
  • 二、恶意文件分析定性
  • 三、文件监控分析
  • 四、实时监控流量并分析


总结

在这里插入图片描述


前言

本文旨在介绍利用Python编程技术和库进行恶意文件分析、文件监控及实时流量分析的方法。从基础编程知识到高级分析工具,如requests、socket、scapy、psutil、Watchdog等,本文全面覆盖。通过微步API进行文件分析定性,结合Watchdog实现文件监控,利用Scapy进行实时流量分析


一、开发所需知识库

如果对于python基础编程和python库使用生疏的同学,可以先去恶补一下前面所学的知识再来学习本章内容

  1. HTTP/S协议发包,Socket网络开发,scapy数据包分析,threading多线程等
  2. requests:用于发送HTTP请求,监控Web服务可用性。
  3. socket:网络通讯编程标准库,用于网络通信和服务监控。
  4. scapy:强大的网络数据包处理库,用于捕获、解析和生成网络数据包。
  5. psutil:用于系统和进程监控,提供了获取CPU、内存、磁盘、网络等信息的接口
  6. threading:多线程库,提供基本的线程管理功能,包括创建线程、启动线程和线程同步等
  7. Watchdog: 是一个用于监视文件系统变化的库,它提供了一种简单而灵活的方式来监视文件或目录的创建、修改、删除和移动等操作。

二、恶意文件分析定性

微步API指南

步骤:

  1. 提交文件分析
  2. 获取文件HASH
  3. 文件信誉分析
  4. 获取结果信息
  5. 文件反病毒分析
  6. 获取结果信息
  7. 联动Server酱推送
    server大酱使用文档
# 实现文件监控,将新产生的文件自动上传,有恶意信息推送到微信
import os
import json
import requestskey = ''
title = '微信微步在线文件分析'
towx_url = 'https://sctapi.ftqq.com/SCT177971TM5hreU54zdaf2UuWpc14W42Q.send?title'url1 = 'https://api.threatbook.cn/v3/file/upload'  # 提交报告分析
url2 = 'https://api.threatbook.cn/v3/file/report'  # 文件检测报告
url3 = 'https://api.threatbook.cn/v3/file/report/multiengines'  # 反病毒分析
apikey = '472cd18a761a4349b5922f676257d5b890ce4152f40d47b084d679df1a29a730'
sandbox_type = 'win7_sp1_enx86_office2013'def upload_file(url, apikey, sandbox_type, file_dir, file_name):"""上传文件到微步,获取文件MD5值"""fields = {'apikey': apikey,'sandbox_type': sandbox_type,'run_time': 60}files = {'file': (file_name, open(os.path.join(file_dir, file_name), 'rb'))}data = requests.post(url1, data=fields, files=files).json()  # 获取文件MD5值sha256_value = data['data']['sha256']return sha256_valuedef file_report(url, apikey, sandbox_type, hash_md5):"""通过MD5值对文件进行定性分析"""params = {'apikey': apikey,'sandbox_type': sandbox_type,'resource': hash_md5}response = requests.get(url, params=params).json()return responsedef multiengines_report(url, apikey, hash_md5):"""反病毒引擎检测报告"""params = {'apikey': apikey,'resource': hash_md5}response = requests.get(url, params=params).json()for key, value in response['data']['multiengines']['scans'].items():if value != 'safe':print(f"{key}:{value}")def send_mssage_wx(key, url):""""""if __name__ == '__main__':file_dir = 'C:\\Users\\YK\\Desktop\\木马\\'file_name = '1.exe'md5 = upload_file(url1, apikey, sandbox_type, file_dir, file_name)response = file_report(url2, apikey, sandbox_type, md5)print(f"威胁等级:{response['data']['summary']['threat_level']}")print(f"威胁类型:{response['data']['summary']['malware_type']}")print(f"威胁家族:{response['data']['summary']['malware_family']}")multiengines_report(url3, apikey, md5)

三、文件监控分析

在进行文件监控的时候,必须先安装相应的包:pip install watchdog

import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandlerclass MyHandler(FileSystemEventHandler):"""MyHandler是一个文件目录的监控类其中内置四个方法:"""def on_created(self, event):if event.is_directory:returnprint(f'文件 {event.src_path} 被创建')def on_modified(self, event):if event.is_directory:returnprint(f'文件 {event.src_path} 被修改')def on_moved(self, event):if event.is_directory:print(f'目录 {event.src_path} 被移动到 {event.dest_path}')else:print(f'文件 {event.src_path} 被移动到 {event.dest_path}')def on_deleted(self, event):if event.is_directory:print(f'目录 {event.src_path} 被删除')else:print(f'文件 {event.src_path} 被删除')if __name__ == "__main__":path = '.'  # 监视当前目录event_handler = MyHandler()observer = Observer()observer.schedule(event_handler, path, recursive=True)  # 创建监控observer.start()  # 开始监控try:while True:time.sleep(1)except KeyboardInterrupt:observer.stop()observer.join()

请添加图片描述
请添加图片描述

四、实时监控流量并分析

Python Scapy工具-sniff函数
8. 开启监控流量过滤协议
9. 写好过滤规则和网络接口
10. 写好过滤特征和流量分析

#filter 筛选
#iface 网卡
#prn 调用函数
#count 获取条数
#store 内存清除
#count:指定最多嗅探多少个符合要求的报文,设置为0时则一直捕获
#store:指定保存抓取的数据包或者丢弃,1为保存,0为丢弃
#offline:从pcap文件中读取数据包,而不进行嗅探,默认为None
#prn:为每个数据包定义一个回调函数,回调函数会在捕获到符合 filter 的报文时被调用,通常使用 lambda 表达式来编写
#filter:用来筛选抓取的信息,其用法与常见抓包软件WireShark 等相同,遵循 BPF 语法
#L2socket:使用给定的L2socket
#timeout:在给定的事件后停止嗅探,默认为None
#opened_socket:对指定的对象使用.recv进行读取
#stop_filter:定义一个函数,决定在抓到指定的数据之后停止
#iface:指定抓包的网卡,不指定则代表所有网卡from scapy.all import *
def handelPacket(p):# p捕获到的数据包p.show()sniff(prn=handelPacket,count=0)from scapy.all import *def packet_callback(packet):data = bytes(packet[TCP].payload)for info in data.split(b'\n'):# print(info)if b'User-Agent: antSword' in info:print('AntSword工具攻击中...')if b'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' in info:print('Behinder攻击中...')if b'Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2' in info:print('Godzilla攻击中...')if __name__ == '__main__':# 获取网络接口列表print("可用接口:", get_if_list())# 使用正确的接口名称sniff(filter='host 192.168.1.7 and tcp port 80', iface='Ethernet0', prn=packet_callback, store=0)

http://www.mrgr.cn/news/57413.html

相关文章:

  • IP Source Guard 实验
  • CentOS 自启动某个应用
  • 嘉立创EDA导入zip压缩文件以及常用快捷键
  • go 包相关知识
  • 电子木鱼小游戏小程序源码系统 带完整的安装代码包以及搭建部署教程
  • pandas 数据分析实战
  • 用Python实现批量解压所有ZIP文件
  • 债券的基础知识(一)
  • L1.【Leetcode笔记】删除有序数组中重复项
  • 从React Hooks看React的本质
  • mongoDB(初识(一)基本概念 ACID、 CAP、 BASE)
  • ECharts饼图-饼图34,附视频讲解与代码下载
  • C语言中#error的作用
  • STM32应用详解(7)USART接收数据的程序(查询方式)
  • 【力扣刷题实战】设计循环队列
  • 工作繁忙的同时,如何兼顾到CSDN的持续分享呢
  • Python中tkinter使用详解
  • Lucas带你机器学习实战——KNN预测未来的爆品
  • 递归算法之组合生成(Combinations)详细解读
  • 事务挂起的原因分析
  • css动画烟花秀__烟花效果
  • 基于开源AI智能名片2+1链动模式S2B2C商城小程序的顾客消费记录价值转化深度研究
  • pytorch dataloader学习
  • 动态规划算法专题(八):01 背包问题
  • 1024是什么日子
  • 头条微头条文章洗稿发布软件注意事项(四)