阶段性回顾
前言
公司的知识分享会轮到我了,怎么做ppt还没想清楚,先把要说的先写好吧()
应急响应
僵尸木马远控事件
唉去应急过的企业都是中小企业,不说安全设备了,有的连像样的交换机都没有,只有一个路由器,面板都不知道怎么进
能拿到的信息就是通报上给的ip,然后对着ip查的一些威胁情报
那么首先,依照惯例,先查外连
1 | netstat -ano | findstr ip |
红框那一列就是pid

有东西的话定位到,然后在交换机或者路由器上设置阻断规则,把恶意ip全阻断了
根据pid定位进程名
1 | tasklist /FI "PID eq 4992" |

找到进程名然后就是找他的位置了
任务管理器查找进程
可以直接打开任务管理器找,在详细信息那里,找到后右键找路径
命令行查找进程
cmd
1 | dir C:\a.exe /s /b |
这个是当时有次渗透,找不到传的马子放哪了,然后用的命令,后来想到这个适用于前面没查出外连,但是威胁情报上面显示恶意样本数很少的情况,直接用这个命令查就行
powershell
1 | Get-Process steam | Select-Object Pat |

那找到了,之后就是删除了,然后再看看是否有持久化措施,并对其一一清理
找不到案例了,毕竟事件也不是那么多,也没有每个都查出来()
查木马就拿之前一次经历说,是个伪装成notepad++的木马,对着威胁情报上面的样本名,用everything找到的

然后本来我说是要远程给他再看看还有没有别的东西,但是网信办的那个老师说不用了,到这就行,然后写报告()
持久化排查并清理
要排查持久化的例子,那就只能用之前疾控培训那边的了,是个勒索病毒的案例
一开机,啥都没有,黑屏
首先先恢复桌面,先快捷键打开任务管理器(esc+shift+ctrl)
文件->运行->explorer
启动两次,就能启动桌面了
排查思路
发现会周期性的kill掉explorer
说明有个计划任务在执行这个操作,那就排查计划任务
先看看计划任务,看完信息再删
清理
win+r启动任务计划程序
1 | taskschd.msc |
根据环境特点以及它的下一次运行时间判断这就是要找的计划任务
查看可知,他是要运行图中显示程序
然后没什么可利用信息,这个计划任务可以删除了
这个文件夹中有两个程序
经尝试,这个文件夹删不掉,那么就从注册表中删除
先查找
找到了一个
继续搜又找到一个
将这两个表项都删除以后,那个文件夹就能删了(不知道为什么与提示说的位置有点出入)
至此,持久化文件被删除完
恢复加密文件就有桌面上的diskgenuis
然后恢复文件
异常流量事件
排查思路跟查木马病毒一样的,接下来说个,在一次排查异常流量事件的遇到的一个,我觉得算是特殊的情况吧
比如拿到一个通报,事件类型是异常流量的,然后里面列举出了目的ip,按照惯例,先看看还有没连接这些ip,然后当时排查就是还有连接的情况
我用我自己电脑模拟一下
1 | $ips=@('114.250.20.215','113.251.224.254','223.67.204.200','62.164.142.167'); Get-NetTCPConnection | Where-Object { $ips -contains $_.RemoteAddress } | Select-Object LocalAddress,LocalPort,RemoteAddress,RemotePort,State,@{Name='Process';Expression={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).ProcessName}} |

这样定位到了进程嘛,然后一看进程(当时排查出现的是迅雷,但是进程名写的不是迅雷,后续排查才知道),这是磁力下载器(qbittorrent)
迅雷
当时排查的时候,不知道具体什么情况,就对着通报的ip来查,然后定位到进程,是个这东西DownloadSDKServer,这里是我模拟的
知道是下载的东西,然后就看正在进行的下载任务(其实当时是有点手忙脚乱了,其实可以直接看任务管理器的,这样找更准确)

对方电脑上再运行的是迅雷,迅雷跟qbit不一样,看不到下载详情,只有
传了个wireshark上去抓包看了下,一开始不知道怎么查
看他那个迅雷还有在下载,就直接重启下载,然后看到多了很多http的包,ua头有Xunlei字段
1 | http.user_agent contains "XunLei" |

然后找到一些数据包,后续不懂怎么查了,但是因为是在下载前开的抓包,然后主机上没有再运行别的软件了,直接看udp协议的
1 | udp |

一堆请求下载服务器的数据包,然后往下划是加密的udp包–quic包
这些包被加密了,暂且不论是什么包吧,当时排查的时候我是直接对着通报里面的ip过滤流量
1 | quic && (ip.addr==xxxxxxx or ip.addr==xxxxxxx or .......) |
然后查出来有两个ip是在流量包里面的,我看了下,就那个人电脑的下载任务有17个
最大下载数如下
那就代表,异常流量有一种情况是磁力链下载的p2p通信
qbittorrent
那回到我电脑上,以qbit为例,排查就是没有迅雷那么困难,因为他能直接看到下载任务正在连接的ip
对着列表查就行,或者任务太多了,那就直接
1 | $ips = '114.250.20.215','113.251.224.254' |

这样就能看到实际的连接ip,要查用qbit是否有连接可疑ip就改变$ips的值就行
如果是用wireshark排查流出流量情况,也就是上传的流量就是
1 | ip.src == 192.168.0.2 && (tcp.srcport==58812 or udp.srcport==58812) && !bt-dht |

端口设置为58812是因为,程序默认设置是这个
这个的排查就比迅雷的要直观多了,毕竟他下载的进程名就是qbittorrent
然后按数据量来看,下磁力的时候,流出的数据也多的

工具梳理整合
暴露面梳理
七月份拿到名单,两百多个企业,头都大了,然后就写了脚本查企业信息的,数据来源是天眼查和爱企查
没有什么太高端的东西,纯爬虫的行为
企业信息
天眼查
就抓包发现,后端数据是通过js传输数据,懒得重新抓包了,就直接把程序中调用的接口的响应打印出来
拷打ai,让他把这个数据美化一下,这样就清晰的看到,从这开始就是想要的数据起始了
这里面就你觉得哪些有用,在写脚本的时候就提取哪些就行
然后就是按照你想要的数据去找嘛,企业基本信息的如上就是,查备案的话,更直接,是纯接口了,直接传json格式的数据,直接提取就行
然后找app信息
微信公众号信息
爱企查
爱企查同样也是用js传输数据,不过多了用Unicode编码了一下,要用的话,转码就行
思路都是一样的
最终效果


然后批量查,批量最多能查多少还不知道,最多的一次是,一次性查了77家,然后没被网站反爬干死
资产信息
根据api文档写的hunter、360quake、fofa的,fofa没测试可用性,因为api不让白嫖,主要是用hunter、360quake
hunter界面这样
查询之后的数据显示
然后导出,有以下几种格式可选
比如导出成txt,格式如下
感觉有点乱,但实际都是按列分好的
quake的界面以及查询后的数据显示是
本来我看就是网页版查是有显示备案号和备案主体这两列的,但是我用api查一直不显示,我以为是代码问题,后来就是用curl命令测试了一下,发现这两个字段返回的是空值,并且网页上,这两列也置空,多此一举了属于是
备案归集
通过上面的那些操作可以拿到些资产,但还不够嘛,然后就用one for all再跑子域名,one for all源码也是拷打ai加了个通知模式,因为是放服务器上跑,能一直运行,加个同事,是怕有时候线程太高啥的,然后内存炸了,整个机子宕掉了都不知道
跑完就多了很多子域名什么的嘛,然后就搞了脚本测活、备案归集、数据处理一下
1. 批量域名备案信息归集
- 从 CSV 文件(OneForAll 输出格式)读取子域名信息
- 查询每个子域名的 ICP 备案信息
- 归集同主域名下的所有子域名、IP、端口等信息
2. 企业名称识别
- 备案信息优先:优先使用 ICP 备案中的企业名称
- 主域名备案查询:子域名无备案时,查询主域名备案
3. 系统类型简单识别
- 邮箱或通信系统:检测邮件、SMTP、IMAP 等关键词
- 门户网站:检测官网、产品、新闻等关键词
- 应用系统:检测 OA、ERP、CRM、登录等关键词
- 其他系统:无法明确分类的系统
4. 系统名称简单提取
- 从网页内容中提取真实的系统名称
- 支持从
<title>、<h1>、<h2>等标签提取 - 识别系统名称关键词(如”系统”、”平台”、”管理”等)
5. 企业白名单过滤
- 根据企业名称列表进行匹配
- 支持宽松匹配(关键词匹配)
- 输出匹配和未匹配的结果分别保存
6. 域名存活检测
- 过滤无法访问的域名(状态码非200)
- 过滤错误页面(404、403、500等)
- 过滤阻断页面和DNS解析错误
7. 钉钉通知功能
- 任务开始、进度、完成通知
- 支持频率限制和重试机制
- 可选择性禁用通知
输出格式
匹配结果文件(自定义文件名)
1 | 企业名称|系统名称|系统类型|子域名|IP|关联域名|协议|访问地址|资产JSON |
未匹配结果文件(not_matched_domains.txt)
1 | 企业名称|系统名称|系统类型|子域名|IP|关联域名|协议|访问地址|资产JSON |
结果文件
效果如下
数据处理
然后这上面的文件要填充到表格里去,手动感觉太麻烦了,就搞了脚本来操作,不以这个文件为例了,因为之前写好了()
字段提取
测试文件如下
选择文件后,会识别分隔符,如果识别不到可以手动设置,然后自动读取表头信息
比如提取url和公司
文件如下
数据填充
这个功能就是服务于前面的,提取后的数据填充到对应的模板上面
源文件就是提取后的数据文件,然后再选个模板文件
比如模板文件是这样
选好文件后,然后要选择映射
然后点启用映射就行,映射情况如下
开始填充
填充好之后

模板管理
这个就是之前数据填充那边,将映射关系保存为模板之后查看的地方
界面如下
模板信息
网信办驻场
这里的工作可以粗略分为两类:写文档和应急
应急之前说了,现在讲讲写文档
很难受,要死这个通报改写,要先把市里面的通报改写成另个模板的,虽说不用所有结构都改,但是架不住量大啊,然后就是要编号,还要加水印图片,还多了要根据是实际情况写责令整改文件、授权书这些,然后要转换成pdf文档
大致流程就是这样
就按照流程然后写成工具自动化改写了
有时候会遇到一些bug,成因是com接口调用繁忙,上一次调用的句柄还未释放,然后就已经到下个通报改写的调用了,就会造成图片插入失败(实际没失败就是接口调用繁忙了,或者没保存,但是可以通过文档恢复)
但其实影响不是不大,毕竟本身这个操作就是需要我手动微调的,不过也分两种情况
- 文档里没有插入设置为
浮于文字上方的盖章样式图片 - 插入了但没保存,打开后要另存为才行,如下图所示

然后就是微调完,点击转换pdf的按钮,那个就是专门转换通报的
摸鱼
上班肯定打游戏啊,巅峰战绩,分配给我的三天的活半个小时不到干完了。。。。。然后被问了怎么那么快,好险是圆过去了。。。。
那空余时间就是拷打ai修下bug,然后打游戏
打游戏打着打着,经常忘记写周报,就拷打ai搓了个写周报的
界面长这样
运行结果
大致原理:
最初想法是,win+tab快捷键能看到打开的历史文件数据,他的数据来源是Windows活动历史数据库,然后就会遇到一些问题 :
- SQLite数据库结构复杂 :微软没有公开完整的数据库架构文档
- 表结构经常变化 :Windows更新时数据库结构可能改变
- 数据关联复杂 :需要关联多个表才能获取完整信息
- 二进制数据 :部分字段存储为二进制格式,需要特殊解析
- API限制
Microsoft Graph API :- 需要Azure AD应用注册
- 需要企业级权限
- 个人用户难以获取必要的API密钥
- 有严格的调用频率限制
Windows Runtime API : - 主要面向UWP应用
- Python调用复杂,需要额外的COM组件
- 功能有限,无法获取详细的文件信息
那就替换方案,改成读取注册表 + 最近文件夹 + 文件系统,这样好操作






![[记录]尝试shiro有key无链利用,但失败](/img/c1/3.webp)

