Skip to content

程序闪退及端口扫描相关问题 #383

Description

@TideSec

一、程序无法启动或启动报错

程序启动(windows/Mac/Linux等)遇到问题,可查看 ReadMe_FAQWin/Linux无法执行或执行报错相关问题合集

二、闪退或自动关闭

由于无影使用了Go+wails框架开发,所以当数据量较大时前端资源占用会比较高,另外当对大量资产进行指纹识别(端口扫描或url检测等)时,资源占用也会比较高,而Windows程序将资源占用较高的程序视为“异常进程”而强制终止,导致程序闪退。

所以当程序出现闪退或自动关闭时,可以排查以下几个问题:

(1)线程数

扫描线程数如果设置过高,很容易导致闪退。而线程数的设置和电脑配置(特别是CPU核数)有很大关系,如果电脑配置不太高(如8G内存、4核CPU),线程数可以设置100-200即可。在配置足够高的情况下,可以设置600-1000之类的线程。

经网友测试,64核CPU设置1000线程可以在1分钟内完成1w左右的url探测,而普通8-16核设置500线程时可能需要5-10分钟且资源占用较高。

Image

(2)指纹策略

由于无影内置了较多的web指纹,所以当涉及对web指纹进行检测时,如果设置了“全量指纹”,那么检测时正则匹配占用的CPU就会很高,所以当资产较多、且线程较高时,可以在“URL探测”中选择“精简指纹”或“最小指纹”策略。

Image

(3)多功能联动

当同时启用多个功能(项目或扫描功能联动),比如密码破解、poc检测、目录探测等都开启时,会大大占用系统资源,所以当扫描任务较多时,尽量降低线程或减少联动功能的使用。

Image

(4)大小核问题

当电脑为Windows系统,且CPU为大小核(英特尔12代之后CPU,如英特尔(Intel) i7-12700K)架构的时候,如果无影长时间运行,可能会涉及进程在大小核之间调度导致程序不稳定,这种情况可以将无影手动固定在大核或小核上,设置方法:任务管理器 - 详细信息 - 右键点击要修改的进程 - 设置相关性,然后选择要这个进程运行的CPU

Image

三、端口扫描不准

有师傅反馈说无影的端口探测和nmap之类的对比,有时发现检测不准,或者对同一目标多次扫描发现开放端口不一样等问题。端口扫描和线程数、网络状况有很大关联,所以当发现端口扫描不准的情况时,可以排查以下几种情况。

(1)线程数太高

线程较高时,对自己的网络占用会比较高(特别是家庭宽带、普通路由器环境),可能导致自己网络设备拥塞从而导致结果不准确;另外,如果对方有安全设备或网络设备性能一般时,高并发也可能导致对方网络出行拥塞,导致结果不准。所以在设置线程数时,个人电脑配置和网络设备情况是很关键的一个制约因素

(2)网络超时设置

如果超时时间设置的比较短,那么扫描速度会快很多,但这就可能导致扫描结果不准确,所以在”高级设置“-”通用超时“设置一个合理的端口探测超时时间(通常1000-3000,也就是1s-3s)是比较重要的,而web超时可以设置5000-30000(5s-30s)之间的值。

Image

(3)25、110端口问题

有些电脑在进行资产端口扫描时,可能会出现明明对方没开25和110端口,但却探测到开放了,这很可能是因为你用的电脑上安装了火绒,火绒默认会开启邮件监控功能并占用25和110端口,导致扫描任意地址都会开启25和110端口,所以关掉火绒的邮件监控或不扫描25和110即可。

(4)MacOS扫描时任意端口都开放

当在MacOS上使用端口扫描工具进行扫描时,特别是线程较高时,有一定概率会导致MacOS网卡出现故障,虽然常规上网功能还都正常,但会出现扫描任意目标时任何端口都开放,这时只能重启MacOS系统才能解决该问题。

(5)MacOS扫描误报率较高

在使用同样的扫描参数对同一目标进行端口开放测试时,发现MacOS误报率比linux或windows都要高,这可能和MacOS的系统机制有关系,Mac在TCP连接管理和防火墙过滤方面相比linux更严格,在进行高并发扫描时可能触发系统自我保护机制,从而影响结果准确性。如发现MacOS扫描误报率较高,可以尝试降低线程数、增大超时时间,看能否解决问题。

四、如何设置一个合理的线程数

根据上述信息,可以根据电脑配置、网络带宽、指纹策略等来确定一个合适的线程数,参考如下:

Image

配置关联说明

  1. 硬件与线程关系

    • CPU核数决定并发上限:每逻辑核心可支撑50-80线程(Intel 12代+需关闭小核调度)

    • 内存容量制约任务规模:每线程消耗2-8MB内存,32G内存建议承载≤4000线程

  2. 网络带宽瓶颈

    • 百兆网络:SYN包速率≤3000/秒 → 线程数≤300

    • 千兆网络:理论可支持10万+连接,但受网卡中断处理限制,实际建议≤800线程

  3. 指纹策略影响

    • 全量指纹(5.2W+规则)会使CPU占用率提升40%-60%,需同比降低线程数

    • 精简指纹(Top1000服务)可开启"启发式扫描"提升效率

  4. 其他说明

    • 当同时启用多个功能(如密码破解、POC 检测、目录探测等)时,建议适当降低线程数。

    • 对于 Windows 系统且 CPU 为大小核架构(英特尔 12 代之后 CPU),可将程序手动固定在大核或小核上运行,以提高稳定性。

    • 遇到高价值目标时,建议采用「低线程(100-200)+长超时(3-5s)+全量指纹」组合提升准确性。

综上,无论是闪退还是端口扫描不准确,很大程度都和电脑配置、线程数、超时时间、指纹策略等息息相关,不能要求一个工具扫描又快、又准还占用极少资源。 比如nmap扫描的确资源占用很低且结果很准确,但它的扫描时间很长且无法识别web指纹,massan和RustScan扫描速度很快,但他们的准确性却是最差的。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions