Skip to content

Latest commit

 

History

History
569 lines (395 loc) · 30.2 KB

usage.md

File metadata and controls

569 lines (395 loc) · 30.2 KB

Nemo使用手册

v1.3

2024-1-20

工作空间

  • 工作空间(Workspace)是用于对不同资源的集合与隔离。Nemo默认只有一个工作空间,可以在“System”-“工作空间”中新建、修改和删除工作空间。
  • 在用户登录到Nemo后,会关联到一个工作空间。如果用户有多个工作空间的权限,通过在DashBoard、IP及Domain页面的右上角下拉框,通过选择进行切换。
  • 如果是超级管理员身份,可通过选择“--工作空间--”,这时可管理所有的工作空间资源;但在新建任务的时候,必须切换到某一个工作空间。
  • 新建一个工作空间后,通过“System”-“用户管理”-“Workspace”,给用户指定工作空间的访问权限;超级管理员身份默认可管理全部的工作空间。
  • 如果工作空间的状态是Disable,将无法切换到该工作空间的使用,但相关已存在的资源都不影响;如果删除一个工作空间,则该工作空间下的所有资源将会全部被清除。

用户管理

1、Nemo用户分为三种类型:

  • 超级管理员:可管理整个Nemo用户、工作空间、参数设置、任务及资源
  • 管理员:可管理参数设置、任务及资源
  • 普通用户:只能查看资源,没有删除资源和管理任务的权限。

2、Nemo安装后,默认帐号密码分别为nemo/nemo,该用户是超级管理员,请登录立即更改默认密码。 3、用户可在“Config”-“配置管理”-“修改登录密码”中对用户登录进行修改;超级管理员可以“System”-“用户”-“Reset”中,修改指定用户的登录密码。

配置管理

配置管理是配置Nemo任务的默认的参数,包括:

  • 端口扫描
  • 子域名收集
  • 指纹获取
  • 任务切分
  • 在线API
  • 任务消息通知Token
  • 自定义任务的工作空间GUID
  • 代理配置

在Nemo的任务中,这些默认参数有些是Server生成任务时使用(任务切分、任务消息通知Token),有些是用于Worker任务执行时读取(具体可查看conf目录下server.yml和worker.yml)。

请注意:请保持server下的worker.yml配置文件与worker中的worker.yml一致,因文件同步机制及后续的某些任务功能会读取worker.yml,如果不一致可能导致运行异常。

在IP与Domain管理页面中,“新建任务”可以对任务的执行参数选项进行调整(主要是端口扫描、子域名收集和指纹获取);“XScan”任务是使用默认的参数选项执行。

1、端口扫描

  • 默认扫描程序:nmap或者masscan,端口扫描是直接通过命令调用可执行文件
  • 默认扫描端口:--top-ports 1000,采用nmap的格式(兼容masscan)
  • Nmap探测技术:-sS,nmap默认使用SYN扫描(masscan无须该参数)
  • 扫描速度:1000
  • PING:Nmap扫描是设置Ping,如果不设置,则会在调用nmap时增加-Pn参数(masscan无须该参数)

2、子域名默认收集技术

  • 子域名被动枚举:调用Subfinder进行被动枚举
  • 子域名暴力枚举:调用massdns,使用指定的字典进行子域名暴力枚举
  • 子域名爬虫:使用爬虫任务指定的域名的首页进行爬取,从页获得页面中与指定域名相关的子域名
  • ICP备案查询:调用Chinaz的ICP备案值查询API接口,获取任务域名的ICP备案信息(需要设置在线API接口)
  • Whois查询:在线查询任务域名的Whois信息
  • 忽略CDN:对使用CDN的IP、Domain跳过进一步的指纹获取
  • 忽略非大陆IP:对非中国大陆的IP跳过进一步的指纹获取
  • 对IP进行端口扫描:对获取到的子域名在通过域名解析获得IP后,对IP生成端口扫描任务(任务会使用商品扫描配置的默认参数)
  • 暴力枚举字典文件:默认使用的暴力枚举字典subnames.txt;内置字典有普通字典(subnames.txt)和大字典(subnames_medium.txt),分别有9W和88W条,大字典执行使用的时间较长,建议慎重使用。

3、指纹获取

  • Httpx:调用httpx,获取web指纹
  • FingerprintHub:根据web_fingerprint_v3.json获取web指纹(不再调用Observer_Ward)
  • Screenshot:调用chrome进行网页屏幕截图
  • IconHash:获取web的favicon
  • fingerprintx:调用fingerprintx获取非HTTP的端口指纹信息

4、任务切分

在新建任务,如果选择任务的执行方式为根据IP切分、根据端口拆分或根据IP和端口拆分时,会根据设置的切分数量,将一个任务分成多个任务执行。

  • IP切分数量:64
  • 端口切分数量:1000

5、在线API

  • FOFA:设置fofa接口的email和token
  • Hunter:hunter的token
  • Quake:quake的token
  • Chinaz:icp查询的token

由于在线API资产查询需要会员,并且查询返回的结果需消耗会员可用的查询余额,为了更好的资产收集效果,建议购买高端或专业的会员。同时v2.10后,增加了API查询请求和返回的数量限制,默认为每次请求100条记录,上限为1000条;同时在日志里会有超出设置上限的提示。可根据使用情况进行设置,如果设置上限为0,则表示不限制查询返回的数量。

6、任务消息通知Token

Nemo支持调用相关平台的API发送任务执行结果消息,目前支持:

备注:部份平台需设置通知内容的关键字,请设置为“Nemo”。

7、自定义任务的工作空间GUID

Nemo将任务分为5种类型,worker启动时通过参数-m指定worker执行的任务类型;对自定义的任务:-m 5,需要用-w参数指定任务关联的工作空间GUID(比如-w 1a0ca919-7960-4067-9981-9abcb4eaa735)。 在Nemo的IP或Domain列表视图中,切换到第一步配置的工作空间,配置自定义任务的工作空间,这些工作空间的任务将会被设置为自定义任务;在新建任务或XScan任务后,只有启动命令为:-m 5 -w 1a0ca919-7960-4067-9981-9abcb4eaa735的worker才会收到任务并执行。

配置格式为:GUID 备注,可以每行配置一个配置多个如: 1a0ca919-7960-4067-9981-9abcb4eaa735 172网段;

8、代理配置

为提高Worker部署和扫描的灵活性,在v2.11版本后,Worker的部份任务功能支持sock5代理,包括:

  • gogo的端口扫描
  • 指纹获取
  • 在线API接口
  • 子域名任务被动收集(subfinder)和爬虫
  • Nuclei漏洞验证

支持同时配置多个socks5代理地址(地址格式为socks5://user:pass@host:port),多个地址将由worker每次任务时随机选择。 由于获取网站截图时调用的chrome-headless不支持验证功能的socks5代理,因此worker在启动时默认在127.0.0.1:5010地址进行代理转发到设置的socks5地址。 worker可通过命令行参数-np关闭代理功能。如果前端任务指定了代理扫描选项,但未配置socks5地址或worker关闭了代理功能,任务将会不使用代理直接执行。

自定义管理

自定义管理可以设置自定义IP归属地、端口服务、黑名单,以及上传Xray和Nuclei的Poc文件及设置Xray的配置文件。

1、IP归属地

IP归属地默认使用纯真的离线数据库。对于企业内部使用的私有地址,可通过自定义IP归属地方式,方便IP的属地化查看。在任务IP归属地查询时,会优先查找和使用自定义的IP归属地。自定义的格式为IP与归属地说明之间用空格分开,#是注释。

自定义的IP归属地有三种方式:

  • 自定义IP:支持单IP、连续IP地址(172.16.8.10-172.16.8.30)和CIDR(192.168.120.128/25)三种方式定义IP和对应的归属地
  • 自定义C段:以C段(24位掩码)方式定义归属地,如192.168.1.0/24
  • 自定义B段:以B段(16位掩码)方式定义归属地,如172.16.0.0/16

2、服务

端口对应的服务类型,默认使用nmap-services;自定义服务可用于企业内部使用的特定的端口和服务,方便端口服务的查看。自定义格式为:端口号/tcp 自定义类型类型,比如20022/tcp SSH服务,中间用空格进行分隔。

3、蜜罐

蜜罐的定义格式为:domain或者IP port1,port2,... 蜜罐名称 (中间以空格分隔),#为注释。如果无确定端口,则指定为-,只匹配该domain/IP;如果指定了端口,则同时匹配domain/IP和端口才标记为蜜罐,如:

  • www.honeypot.com - 这是一个蜜罐
  • 192.168.120.160 11080,33306 本地测试蜜罐

在IP和Domain的页面中,对匹配到的蜜罐,会提示红色的“蜜罐”信息。

4、黑名单

任务结果中黑名单中的IP与域名不会保存到数据库中;通过在线资产平台(如FOFA等)收集到的资产如果是黑名单中,会忽略指纹获取、漏洞扫描任务及保存。黑名单分为IP黑名单和域名黑名单

  • IP黑名单:格式为:IP 备注(备注为可选),如单IP:172.16.8.1 XX公司;连续IP地址:172.16.8.10-172.16.8.30 YY公司;CIDR:192.168.120.128/25 ZZ公司
  • 域名黑名单:用于域名任务,以及在线资产管理平台收集到的黑名称匹配,采用正则匹配的方式,格式为完整的主/子域如: qq.com、stmp.qq.com、.pop3.qq.com、.gov.cn

5、Poc上传

可上传单个xray(.yml)或nuclei(.yaml)的poc文件,上传的位置是conf/worker.yml中配置的路径。

6、Xray配置

对漏洞扫描的Xray配置文件进行修改,包括:

  • config.yaml
  • module.xray.yaml
  • plug.xray.yaml
  • xray.yaml

具体的配置,请参考Xray的文档。

组织管理

组织是用来对同一工作空间中的资源进行逻辑归属,工作空间的资源可以不指定组织归属,也可以有且归属于某一个组织。目前不能手工将某个IP或Domain资源指定到某个组织中,只能通过新建任务的方式,在任务中指定组织,将任务执行的最终结果中包括的IP或Domain归属到某个组织中。如果这个资源以前已归属一个不同的组织,则只会被重新归属到最新的任务指定的组织。

在实战攻防中,可能同一团队中多个队员、同时开展对多个目标的渗透测试工作,每个队员在新建任务时,将任务目标与组织进行关联后,团队通过查询中指定组织就能比较方便地查看该组织相关的IP或Domain资源,能够做到目标清晰、减少干扰。

如果在组织管理中删除某一个组织,则该组织关联的资源将会被全部删除。

资源管理

在Nemo中,资源包括:IP、Domain和Vulnerability,每一个资源都属于一个工作空间,在同一个工作空间中,IP和Domain是唯一的。

IP

1、任务

任务有三种类型的任务:

  • 端口扫描
  • 漏洞扫描
  • 探测+扫描

端口扫描

  • 对指定的IP目标,调用nmap/masscan进行端口扫描
  • 对扫描开放的端口使用指定的方式进行指纹探测
  • 调用在线资产平台,获取IP关联的资产
  • 查询IP归属地

“目标资产所有端口”选项:读取输入目标的资产IP已探测到的所有开放端口,进行指纹和信息收集;可以和主动扫描同时进行,也可以单独进行。输入的目标只能是 IP 或者 IP/掩码 两种格式。

漏洞扫描

  • 对指定的IP目标,调用相应的漏洞验证工具进行漏洞扫描
  • 扫描的目标会直接传递给漏洞工具,格式为ip:port的方式,如果不指定port为为默认的80端口
  • 目标资产所有开放端口:读取输入目标的资产IP已探测到的所有开放端口,按ip:port格式生成漏洞验证的目标输入的目标只能是 IP 或者 IP/掩码 两种格式。

探测+扫描

  • 探测:对指定目标IP目标的指定端口进行端口扫描(一般为80、443、8080,也可根据实际情况设置),如果该IP存活且端口开放,则将该IP的C段加入到下一步的扫描目标中
  • 扫描:对探测到的存活C段,按指定的扫描端口进行扫描(同“端口扫描”任务)。

指纹获取

在完成端口扫描或在线API获取到IP的端口后,可以使用以下几种指纹获取技术获取端口的详细信息:

  • Httpx:调用httpx程序,获取web相关的详细指纹,包括title、server、status-code、TLSData、以及HTTP的Header及Body等
  • FingerprintHub:调用Observer_Ward程序及定义的web_fingerprint_v3指纹特征库,获取端口的指纹信息
  • Screenshot:调用Headless Chrome浏览器,获取端口的屏幕截图信息
  • IconHash:获取HTTP网站的Icon图标及信息

在线资产平台API

可调用在线资产的API平台,获取IP关联的资产,支持以下平台:

  • Fofa
  • Quake
  • Hunter

使用在线资产API平台获取资产,必须在配置管理里设置有效的API Token,如果API有并发及检索数量限制,可能导致调用失败。该任务与端口扫描任务是同时并发进行的。

通过在线资产API平台获到到的资产,在经过去重后会使用任务设置的扫描工具和指纹工具选项,对端口进行扫描和获取指纹信息。

任务模式

任务模式是新建任务时,对任务执行的并发程度进行控制的方式。一般情况下,任务的目标可能是一个或多个IP及IP段,在新建任务时,合理地对目标IP或端口进行拆分,一方面可以通过多个任务并发执行提高执行效率,另一方面多个任务分配到多个worker上执行,减少了同一IP的扫描流量。

任务模式有以下方式:

  • 单任务:对全部目标生成一个任务执行
  • 每一行目标单个任务:将输入的目标每一行生成一个任务执行
  • 按IP切分任务:将输入目标,按配置管理的“任务切分”设置的IP个数进行切分生成多个任务,每个任务扫描相同的指定的端口
  • 按端口切分任务:将指定的端口按配置管理的“任务切分”设备的端口数量进行切分生成多个任务,每个任务扫描相同的IP目标
  • 按IP和端口交叉切分任务:按配置管理的“任务切分”设置的IP和端口个数同时进行切分,交叉生成切分后的IP和端口的任务

定时任务

定时任务是在新建任务的时候,将任务目标及参数保存至数据库,由Server的定时任务线程,根据任务设定的定时规则生成运行任务。定时任务规则是采用Linux的Crontab的定时规则。

# .---------------- minute (0 - 59) 
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ... 
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7)  OR
#sun,mon,tue,wed,thu,fri,sat 
# |  |  |  |  |
# *  *  *  *  *  

例如:0 8-16/2 * * *表示在每天8-16点的整点,每隔2小时启动

2、XScan任务

XScan任务,是为了提高工作效率,将端口扫描、在线API资产接口、指纹获取及漏洞扫描实现流程化集成的任务模式。

与普通任务相比,主要有两方面差别。一是在通过端口扫描及在线API接口获得的资产,可以直接进行对结果漏洞扫描;二是在新建XScan任务时简化了参数设置,大部份参数采用配置管理中定义的参数。

XScan任务目标主要有两种形式:

  • IP/Domain:目标为输入的IP或Domain,先进行端口扫描(IP目标)或子域名收集(Domain)任务,对结果进行指纹获取和漏洞扫描
  • 组织:读取指定组织已收集到的信息,生成IP:Port列表或域名列表,进行指纹获取和漏洞扫描

XScan任务的流程图示意: Img

3、查询及其它功能

对已收集到的IP资产,Nemo提供了列表视图和资产详细视图两种模式,为团队提供资产搜索、标记、备忘录及删除功能。

列表视图

在列表视图下,主要提供了IP及归属地、开放端口及HTTP状态码,以及汇聚Icon图标、Title、Banner及屏幕截图等信息。资产默认是按更新时间排序,可点击“更多”选项,去掉勾选的“按更新时间排序”,则将会IP地址的Int值顺序进行排序。

可根据以下条件的进行搜索资产(条件之间是逻辑“与”的关系):

  • 组织
  • Domain:与IP关联的Domain
  • IP:单个IP或IP掩码格式
  • Port:指定端口开放的IP
  • IP归属地
  • 端口属性
  • HTTP状态码
  • 颜色标记
  • 备忘录信息
  • HTTP信息
  • IP更新时间
  • 端口发现时间

资产详细视图

在列表视图点击IP地址,进入资产详细视图,主要包括以下内容:

  • 端口信息:IP所开放的端口
  • 关联域名:与IP关联的所有Domain
  • 站点标题:汇聚该IP所有端口获取到的title属性的内容
  • Banner:汇聚该IP所有端口获取到的的banner、server、tag、fingerprint等属性的内容
  • IconHash:该IP下所有端口获取到的HTTP系统的Icon及Hash值,可点击自动跳转到Fofa的Iconhash搜索
  • Screenshot:该IP下所有端口获取到的网站屏幕截图
  • 漏洞信息:IP与关联的漏洞信息
  • 端口信息:IP每一个端口收集到的详细信息的来源、属性、内容及时间等

置顶

将选择的IP或域名资产始终固定在列表视图的顶部,便于提醒团队关注该信息;被置顶的资产可以取消置顶。

备忘录编辑及导出

在团队协作中,队员可以将该资产的有关信息,比如获取到的用户名密码、分析的结果、重要提醒等通过备忘录的方式,保存相应的资产中。在列表视图中,有备忘录的资产将会显示小旗子进行提示,同时也可以通过模糊查询对备忘录进行搜索或导出。

标记颜色

Nemo内置了RED、YELLOW、BLUE、GREEN、GRAY及BLANK六种颜色,供团队对资产进行分类标记,被标记的资产将会在列表视图中显示对应的背景颜色。同时被标记的颜色也可以被清除标记。

导出

导出功能根据当前列表视图的搜索条件,将IP资产按以下格式导出为csv格式文件:

  • Url
  • IP
  • 开放端口
  • IP归属地
  • HTTP状态码
  • 标题
  • 指纹
  • TLS数据
  • HTTPX的返回信息
  • Source

统计

统计功能根据当前列表视图的搜索条件,统计IP资产的以下属性:

  • 开放端口及IP数
  • IP所属子网,及该子网有多少IP
  • IP列表
  • IP归属地统计

导入离线资产

支持解析并导入常用端口扫描工具的扫描结果到Nemo中,目前支持以下工具及平台的资产:

  • nmap
  • masscan
  • fscan
  • gogo
  • naabu
  • httpx
  • TxPortMap
  • 0Zone
  • Fofa
  • Hunter

对大部份资产平台及扫描结果的解析,为根据当前工具的文档定义自行编码进行的解析,不能保证全部的完整性和正确性。

一键拉黑

将IP或域名资产加入到黑名单列表中,同时从数据库中删除IP或域名,以及IP关联的域名! 通过将IP或域名拉黑的方式,降低使用在线API接口获取到的部分无效资产的干扰,请慎重使用!

Domain

1、任务

任务有两种类型的任务:

  • 资产扫描
  • 漏洞扫描

资产扫描

  • 资产扫描使用子域名收集技术,收集目标域名下的子域名
  • 对目标域名和子域名的进行指纹探测
  • 调用在线资产平台,获取目标关联的资产
  • 获取目标的Whosis、ICP备案信息
  • 对域名和子域名进行地址解析
  • 域名的资产扫描任务完成后,可对所有结果解析的IP地址或C段生成端口扫描任务,端口扫描使用配置管理中配置参数选项

漏洞扫描

  • 对指定的域名目标,调用相应的漏洞验证工具进行漏洞扫描
  • 扫描的目标会直接传递给漏洞工具,格式为Domain:port的方式,如果不指定port为为默认的80端口

子域名收集技术

  • 子域名被动枚举:调用Subfinder进行被动枚举
  • 子域名暴力枚举:调用massdns,使用指定的字典进行子域名暴力枚举(字典文件在“配置管理-子域名默认收集技术”)
  • 子域名爬虫:使用爬虫任务指定的域名的首页进行爬取,从页获得页面中与指定域名相关的子域名
  • ICP备案查询:调用Chinaz的ICP备案值查询API接口,获取任务域名的ICP备案信息(需要设置在线API接口)
  • Whois查询:在线查询任务域名的Whois信息

2、XScan

同IP的XScan任务

3、查询及其它功能

对已收集到的域名资产,Nemo提供了列表视图和资产详细视图两种模式,为团队提供资产搜索、标记、备忘录及删除功能。

列表视图

在列表视图下,主要提供了IP地址,以及汇聚Icon图标、Title、Banner及屏幕截图等信息。资产默认是按更新时间排序,可点击“更多”选项,去掉勾选的“按更新时间排序”,则将会资产的完整域名的ASCII码升序排序。

可根据以下条件的进行搜索资产(条件之间是逻辑“与”的关系):

  • 组织
  • Domain:域名的关键词进行模糊查询
  • IP:关联的单个IP
  • 域名属性
  • 颜色标记
  • 备忘录信息
  • HTTP信息
  • 更新时间
  • 创建时间

备注:Nemo在对域名资产汇聚Title、Banner及站点标题等信息时,包含域名关联的IP地址中的上述信息。

资产详细视图

在列表视图点击域名,进入资产详细视图,主要包括以下内容:

  • 端口信息:域名关联的IP开放的端口
  • 关联IP:与域名关联的所有IP地址
  • 站点标题:汇聚域名及关联的IP的title属性的内容
  • Banner:汇聚域名及关联的IP的banner、server、tag、fingerprint等属性的内容
  • IconHash:域名获取到的HTTP系统的Icon及Hash值,可点击自动跳转到Fofa的Iconhash搜索
  • Screenshot:域名下所获取到的网站屏幕截图
  • 漏洞信息:与域名关联的漏洞信息
  • 域名相关信息:域名的指纹收集、ICP备案、Whois查询、HTTP等信息
  • 端口信息:域名关联的IP每一个端口收集到的详细信息的来源、属性、内容及时间等

导出

导出功能根据当前列表视图的搜索条件,将域名资产按以下格式导出为csv格式文件:

  • Domain
  • IP
  • 开放端口
  • HTTP状态码
  • CDN信息
  • 标题
  • 指纹
  • TLS数据
  • Source

统计

统计功能根据当前列表视图的搜索条件,统计域名资产的以下属性:

  • 主域名
  • 子域名
  • 子域名中域名列表及出现的次数
  • 域名关联的IP的C段
  • 域名关联的全部IP

其它功能使用参见IP管理

Vulnerability

漏洞是Nemo任务通过调用漏洞检测工具,对通过POC验证存在的资产及漏洞的信息。Nemo支持调用以下几种漏洞检测工具:

  • XRay
  • Nuclei
  • Goby

XRay和Nuclei是通过命令行的方式传递参数调用并解析结果文件;Goby需通过服务端部署的模式,通过API调用和解析结果。

POC使用与管理

  • XRay调用POC的两种方式:

    • 内置POC:每一个版本的xray都集成了相应的POC,可直接进行使用
    • 自定义POC:对XRay没有集成的POC,可自行编写后上传到Nemo进行使用
  • XRay如果不指定POC,会执行默认webscan模式。

  • Nuclei的POC,在Release包中默认是集成nuclei-templates

  • Goby由于没有提供POC列表,因此任务是使用全部的POC。更多Goby相关的细节,请参考安装文档中的Goby内容。

  • XRay与Nuclei可在“自定义管理”-“Poc上传”处,上传自定义的POC;相同文件名的的POC会覆盖并不会提示,目前暂时只能手工在worker删除上传的POC文件。

任务管理

Nemo有三种类型的任务:

  • 定时任务
  • 主任务
  • 运行子任务

定时任务和主任务在是IP或Domain管理页面,通过新建任务或XScan任务,指定任务目标、设置任务参数和执行的技术。主任务在新建后会立即执行;定时任务由Server的定时任务进程根据任务的定时启动规则,周期性地生成主任务后启动执行。

运行子任务是主任务启动执行后,根据目标的执行模式、使用的技术方式等,生成多个子任务并发执行,如果有多个worker则会分布式执行。运行子任务是worker中真正执行具体的扫描和信息搜集的过程。

定时任务和主任务会存入到数据库中,Server定时任务线程根据定时规则生成主任务

主任务后台线程根据任务的要求生成运行子任务、监控子任务的执行状态,同时将运行子任务发布到消息中间件。Nemo的任务是异步且分布式执行的,采用了rabbitmq消息中间件进行子任务的分发和确保任务完成的可靠性。

主任务在整个执行过程中,有以下状态:

  • CREATED:创建,主任务还没有开始执行
  • STARTED:正在执行中,已生成了运行子任务并且子任务已发送到消息队列中
  • SUCCESS:执行完成,所有运行子任务全部执行完成或被取消,没有待执行或执行中的运行子任务

运行子任务有以下状态:

  • CREATED:创建,还没有开始执行
  • STARTED:执行中
  • SUCCESS:完成,并成功执行
  • FAILURE:完成,但执行失败
  • RECEVIED:创建并被worker接收
  • PENDING:任务被挂起
  • REVOKED:任务被中止取消执行
  • RETRY:任务失败重试

中止取消子任务执行 运行子任务被创建(CREATED)、但没有开始执行时,可手工中止取消任务(REVOKED),或者删除该任务。由于golang的协程运行机制,任务处于执行中(STARTED)无法中断协程的运行。

唯一的(不完美)方式是:删除该任务(最终是删除掉数据库的记录),通过Dashboard“重启”,或手工Kill执行该任务的worker进程后重启worker进程。在worker被“重启”或kill后,任务会被重新放回消息队列并分发到其它正常的worker,但由于数据库中已删除任务记录,worker不会去执行该任务,同时在日志里会提示“任务不存在”。

如果从web的任务管理中删除一个已执行中的运行子任务,不会影响该任务的正常执行(除非重启执行任务的worker进程),但任务的结果(IP、Domain资产及属性等)不会被正常保存。如果删除主任务,则该主任务生成的运行子任务也将全部被删除。

如果重启worker,当前worker的正在执行的任务虽然会被中断,但任务会被重新放回消息队列并分发到其它正常的worker并再次重新执行。

文件同步

Nemo比较推荐采用分布式worker的使用方式。为了方便对worker的资源分发,设计了server与worker的文件同步功能。文件同步的运行机制为:

  • Server在启动后,会在5002端口上进行文件同步监听,同时会对Server下的指定的文件和目录的更改进行监控,监控的文件和目录包括:

    • work_linux_amd64
    • version.txt
    • conf
    • thirdparty

    可参见pkg/filesync/config.go

    // syncFileList 需要同步的文件白名单
    var syncFileList = []string{"worker_linux_amd64", "version.txt", "conf", "thirdparty"}
    
    // syncFileBlackList 不需要、禁止同步的文件黑名单
    var syncFileBlackList = []string{"thirdparty/massdns/temp", "conf/server.yml", "conf/app.conf"}
  • Worker在启动时,会主动请求Server进行一次文件同步

  • 可以在server或worker启动时,增加-nf选项禁止文件同步功能

文件同步功能会在worker上新建和覆盖server上相同的文件,worker不会自动删除被server删除的文件,也不会删除server不存在的文件或目录。

日志管理

从v2.10后,worker的RuntimeLog通过RPC的方式上传到Server并保存到数据库中,从v2.9版本升级需导入runtimelog.sql以创建数据库表。

Nemo日志按从高到低分为Fatal、Error、Warning、Info、Debug及Trace六个级别,每条日常包含了来源Worker、产生日志的文件、函数及信息,重点需关注Error和Warning类。

Worker管理

从v2.11后,支持对worker的任务执行情况、所在VPS的CPU/MEM资源使用率进行监控,同时可通过Server端动态修改Worker的启动参数;修改的启动参数由Daemon进程重启并传递到Worker执行。可修改的启动参数包括:

  • 任务并发数(-c)
  • 任务执行模式(-m)
  • Worker性能模式(-p)
  • 默认启动参数文件(-f)
  • 自定义任务的工作空间GUID(-w)
  • 关闭socks5代理功能(-np)

知识库

知识库是Nemo的一个功能模块,主要是为了方便团队协作,将团队的知识、经验、资产等进行整理、归纳和分享。知识库文档的内容可关联到IP和域名资产。目前已集成了飞书知识库,具体使用方法见飞书知识库的文档

同步知识库

从飞书知识库中同步知识库的文档列表到Nemo中。

如果文档在Nemo中不存在,则在Nemo中创建文档,如果文档在Nemo中存在,则更新文档的标题和时间。如果文档在飞书知识库中不存在,则会从Nemo中删除文档。

Nemo会调用飞书知识库的API,获取每一个文档的纯文本内容,并提取出其中的IP和域名,如果该文档中的IP和域名在Nemo中存在,则会创建文档和IP、域名的关联关系。在IP或域名的列表及详情页面中,可以查看到该IP或域名在哪些文档中出现过。

新建文档

通过Nemo新建一个文档,即可在Nemo中新建一个文档,并通过API同步在飞书的知识库中创建文档。创建文档时,标题将同步到飞书知识库中的文档标题,备注只是用于在Nemo中使用。

编辑文档

点击文档列表中的标题,即可打开网页版的飞书知识库的文档编辑页面。文档的编辑最终是由飞书云文档在线进行的,Nemo只是提供了一个打开文档编辑页面的链接。

修改文档

修改文档只是修改了文档的标题和备注,不会修改飞书知识库中的文档信息。同时可以选择是否将文档在Nemo中置顶(不会影响飞书知识库中的文档),如果文档已导出到Nemo,也可以选择是否清除导出的文档。

导出文档

可将文档导出到Nemo中。导出的文档将会保存在Nemo的“知识库”目录下。已导出的文档在标题前会有标记,点击即可下载到本地进行查看和编辑。