冬训营丨打造一款诊断型个人防火墙
1. 以内核中的网络流量为线索出发,获取对应进程,运行环境,及其对应的文件路径。
2. 根据协议,获取进程所打开的端口,看是否有异常端口。
3. 根据远程IP获取对方地理位置,是否有境外连接。
4. 根据远端尝试接入的连接信息(如:敏感端口列表,连接频率),判断自己是否被扫描。
//探测端口列表 port=21,23,135,137,138,139,445,1433,3306,3389 //探测模式,0:全部都扫了才告警1:只要扫描其中一个就告警,2:扫两个...依此类推 mode=1 //白名单 whiteList= sameIPRemindTime=3 MaxRecord=500 silence=0 |
8. 通过获取关键网络封包(如:首包),并将其发送至安全大脑,用于分析,并传回结果,决定是否封锁异常进程。
开放三个接口
#define DLL_EXPORT __declspec(dllexport)
void DLL_EXPORT __stdcall init(int tid);//初始化,启用插件时调用,主线程执行
void DLL_EXPORT __stdcall uninit(inttid);//反初始化,取消插件时调用,主线程执行
void DLL_EXPORT __stdcall recvLog(int tid,const LPCSTR log);//接收网络日志,独立线程
11. 展望及沙丁鱼系列工具
安世盾防火墙(Personal Fire Wall)
ActionScope(获取可执行文件的行为)
certiScope(提取可执行文件中的资源证书等)
VirtualMatrix(一系列虚拟化工具集)
FileRescuer(恢复误删除的文件和目录等)
MMWarpIn(直接读写物理内存,从内核投放代码到进程等)