您现在的位置是:休闲 >>正文
扫描目标机漏洞的代码
休闲892人已围观
简介 扫描目标机漏洞的代码 写漏洞扫描器这事儿,说穿了就是跟TCP/IP协议栈较劲。三年前我在内网做渗透测试,对着一个开了3389端口的Windows Server 2003,用Nmap扫了半小时愣是没发 ...
扫描目标机漏洞的扫描代码
写漏洞扫描器这事儿,说穿了就是目标跟TCP/IP协议栈较劲。三年前我在内网做渗透测试,机漏对着一个开了3389端口的洞的代码Windows Server 2003,用Nmap扫了半小时愣是扫描没发现MS08-067的痕迹——后来才知道,当时用的目标默认脚本库压根没启用smb-vuln-ms08-067检测。所以别迷信工具,机漏自己写代码才能控制每个字节的洞的代码走向。
先拿最简单的扫描端口扫描开刀。Python的目标socket库足够干这活儿,但别用connect()那种粗暴方式——目标机防火墙一看到全连接请求直接丢进黑洞。机漏我习惯用SYN半开扫描,洞的代码构造IP头加TCP头,扫描标志位只置SYN。目标发出去后等响应,机漏收到SYN+ACK说明端口开着,RST就是关了,没回应多半被防火墙过滤了。这段代码看着短,但raw socket需要root权限,Windows下还得装Npcap驱动,坑不少。
端口扫完就该上服务指纹识别了。这里有个诀窍:别光看banner,要主动发畸形包。比如识别Apache和Nginx,你发个超长HTTP头,Apache返回400带Server头,Nginx直接给你个499还带响应头差异。我写过个函数,专门解析HTTP响应头里的Server字段和X-Powered-By,但更要命的是抓TLS证书里的CN和SAN——很多管理员忘了更新证书,域名信息直接暴露内网拓扑。
漏洞匹配才是重头戏。我不喜欢用现成的CVE数据库,那玩意儿滞后性太强。自己维护个小规则库,用正则表达式匹配服务版本的指纹特征。比如检测OpenSSH 7.7之前的版本,直接比对版本号字符串,但有些设备会伪装版本号,这时候就得靠发送特定SSH协议消息,看回应的算法协商列表——如果出现diffie-hellman-group-exchange-sha256这种老算法,八成是低版本。
写扫描代码最怕什么?不是目标机防御强,是自己代码先崩了。处理超时得用非阻塞socket加select轮询,别用time.sleep()硬等。去年我扫描某医疗系统,对方防火墙对每个SYN包都回RST,程序没做异常捕获,直接抛ConnectionResetError中断了。后来加了重试机制,连续三次失败就跳过该端口,日志里记录"filtered"状态。
最后说点实在的。扫描代码跑完,输出别只给端口列表和漏洞编号,要给出利用建议。我一般把结果存成JSON,标记风险等级,高危漏洞自动关联对应的Metasploit模块路径。但记住,扫描只是第一步,真正验证漏洞还得靠手工发送payload——别指望全自动工具能绕过所有WAF,至少我还没见过。
代码写多了会形成肌肉记忆。现在我看到一个陌生的IP段,脑子里自动浮现出SYN包的结构和TCP窗口大小的计算方法。这种直觉不是看文档看来的,是几千行扫描代码堆出来的。要是你刚入门,先别急着写漏洞检测,把端口扫描器调教到稳定再说——连基础都打不牢,谈什么漏洞挖掘。
Tags:
相关文章
渗透测试靶机搭建
休闲渗透测试靶机搭建 靶机不是玩具。它是一台故意留了洞的机器,用来让你合法地“犯罪”。我见过太多人拿DVWA练手,练完觉得自己能打CTF了,结果真给个公网IP,连nmap都扫不利索——因为靶机太“干净”了 ...
【休闲】
阅读更多双鱼视频下载官网
休闲双鱼视频下载官网这个域名,我盯了它快半年。每次在搜索引擎里敲下这几个字,跳出来的结果总让人哭笑不得——要么是挂着“官方”旗号的盗版聚合站,要么是根本打不开的僵尸页面。真正让用户踏实的下载渠道,其实藏在 ...
【休闲】
阅读更多论坛推广怎么做
休闲论坛没死,只是活法变了。十年前大家泡论坛是为了找同好,现在大家刷论坛是为了找答案。推广的逻辑也跟着变了——以前是“我发帖,你来看”,现在是“你提问,我来答”。 我见过最蠢的推广方式,是注册一堆小号,把 ...
【休闲】
阅读更多