Nemo 渗透测试自动化信息收集平台 开源工具

Nemo 渗透测试自动化信息收集平台 开源工具

Nemo简介

Nemo是用来进行自动化信息收集的一个简单平台,通过集成常用的信息收集工具和技术,实现对内网及互联网资产信息的自动收集,提高隐患排查和渗透测试的工作效率,用Golang完全重构了原Python版本。

功能列表

1、IP资产

  • Masscan、Nmap端口扫描
  • IP归属地(纯真离线数据)
  • 自定义IP归属地、Service、蜜罐
  • 导入本地的Masscan、Nmap端口扫描结果
  • 导入fscan扫描结果(适用于内网渗透的资产信息收集)
  • CDN识别

2、域名资产

3、指纹信息

4、API接口 (需提供相应的Key)

5、Poc验证与目录扫描

6、分布式任务

  • 分布式、异步任务执行
  • 多维度任务切分
  • Server与Worker通过 RPC 同步

7、团队在线协作

  • [TODO]

8、其它

  • 资产的统计、颜色标记与备忘录协作
  • Docker支持

安装方法

Docker

mkdir nemo;tar xvf nemo_linux_amd64.tar -C nemo;cd nemo
docker-compose up -d

Linux

ubuntu18.04 LTS测试通过

1、Server

  • 创建安装目录并解压tar包
mkdir nemo;tar xvf nemo_linux_amd64.tar -C nemo;cd nemo
  • 安装环境和依赖
sudo apt-get update \
    && sudo apt-get install vim \
    mysql-server rabbitmq-server --fix-missing
  • 导入并配置mysql数据库

由于mysql5.7新版本默认安装后不能使用root和空密码在本机登录,系统自动生成的用户名密码位于/etc/mysql/debian.cnf,请替换并使用配置文件中的user和password:

user@localhost:/etc/mysql$ sudo cat debian.cnf
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = BtRH1gaoI5lPqZpk
socket   = /var/run/mysqld/mysqld.sock

导入nemo.sql:

mysql -u debian-sys-maint -p -e 'CREATE DATABASE `nemo` DEFAULT CHARACTER SET utf8mb4;' \
    && mysql -u debian-sys-maint -p -e 'CREATE USER "nemo"@"%" IDENTIFIED BY "nemo2020";GRANT ALL PRIVILEGES ON nemo.* TO "nemo"@"%";FLUSH PRIVILEGES;' \
    && mysql  -u debian-sys-maint -p nemo < docker/mysql/initdb.d/nemo.sql 

配置rabbitmq:增加rabbitmq用户和密码

sudo rabbitmqctl add_user nemo nemo2020
sudo rabbitmqctl set_permissions -p "/" nemo ".*" ".*" ".*"

配置文件

conf/server.yml

web:
  # web server 监听IP和地址
  host: 0.0.0.0
  port: 5000
  # 登录用户名密码
  username: nemo
  password: 648ce596dba3b408b523d3d1189b15070123456789abcdef
  # screenshot 在本地保存位置,需与app.conf中与static映射地址保持一致
  screenshotPath: /tmp/screenshot
  # taskresultPath 任务结果本地保存路径,需与app.conf中的taskresult路径保存一致
  taskresultPath: /tmp/taskresult
# rpc监听地址和端口、auth
rpc: 
  host: 0.0.0.0
  port: 5001
  authKey: ZduibTKhcbb6Pi8W
# 数据库配置
database:
  host: 127.0.0.1
  port: 3306
  name: nemo
  username: nemo
  password: nemo2020
# 消息中间件配置
rabbitmq: 
  host: localhost
  port: 5672
  username: guest
  password: guest

重要:记得要修改默认的authKey。

conf/app.conf:

#screenshot默认保存位置,与server.yml保持一致
staticdir = static:web/static screenshot:/tmp/screenshot taskresult:/tmp/taskresult

2、Worker

  • 创建安装目录并解压tar包
mkdir nemo;tar xvf worker_linux_amd64.tar -C nemo;cd nemo
  • 安装环境和依赖
sudo apt-get update \
    && sudo apt-get install vim git python3-pip python3-setuptools \
    nmap masscan chromium-browser --fix-missing
  • nmap&masscan: 因为nmap、masscan的SYN扫描需要root权限,为避免使用sudo,设置root权限的suid(如果默认是root则可跳过)
cd /usr/bin \
    && sudo chown root nmap masscan && sudo chmod u+s nmap masscan 
  • python3与pocsuite
python3 -m pip install -U pip -i https://mirrors.aliyun.com/pypi/simple/ --user \
    && python3 -m pip install -U requests pocsuite3 -i https://mirrors.aliyun.com/pypi/simple/
  • 配置文件conf/worker.yml :
 # RPC 调用的server监听地址和端口、auth
rpc:
  host: 0.0.0.0
  port: 5001
  authKey: ZduibTKhcbb6Pi8W
# 消息中间件
rabbitmq: 
  host: localhost
  port: 5672
  username: guest
  password: guest
# 使用的API接口用户、密码,如果为空则该api不无使用
api:
  fofa:
    name:
    key:
  icp:
    name: chinaz
    key:
# 任务使用的参数
portscan:
  ping: false
  port: --top-ports 1000
  rate: 1000
  tech: -sS
  cmdbin: masscan
domainscan:
  resolver: resolver.txt
  wordlist: subnames.txt
  massdnsThreads: 600
pocscan:
  xray:
    pocPath: thirdparty/xray/xray/pocs
    latest: 1.8.2
  pocsuite:
    pocPath: thirdparty/pocsuite/some_pocsuite
    threads: 10

MacOS安装与配置

0、解包

mkdir nemo;tar xvf nemo_darwin_amd64.tar -C nemo;cd nemo

1、rabbitmq

brew install rabbitmq

配置rabbitmq:增加rabbitmq用户和密码
sudo rabbitmqctl add_user nemo nemo2020
sudo rabbitmqctl set_permissions -p "/" nemo ".*" ".*" ".*"

2、mysql

brew install [email protected]

创建数据库

brew services run [email protected]
mysql -u root
	>CREATE DATABASE `nemo` DEFAULT CHARACTER SET utf8mb4;

导入nemo.sql

mysql -u root nemo < docker/mysql/initdb.d/nemo.sql

创建用户并授权

CREATE USER 'nemo'@'%' IDENTIFIED BY 'nemo2020';
GRANT ALL PRIVILEGES ON nemo.* TO 'nemo'@'%';
FLUSH PRIVILEGES;

3、nmap&masscan

brew install nmap masscan
# 因为nmap、masscan的SYN扫描需要root权限,为避免使用sudo,设置root权限的suid
cd /usr/local/Cellar/nmap/7.80_1/bin
sudo chown root nmap
sudo chmod u+s nmap
cd /usr/local/Cellar/masscan/1.0.5/bin
sudo chown root masscan
sudo chmod u+s masscan

4、whatweb(可选)

git clone https://github.com/urbanadventurer/WhatWeb
cd WhatWeb
# whatwebf需要编译和安装ruby,通过make install自动安装相关的ruby依赖
make install

5、conf/server.yml(根据实际情况修改)

web:
  host: 0.0.0.0
  port: 5000
  username: nemo
  password: 648ce596dba3b408b523d3d1189b15070123456789abcdef
  screenshotPath: /tmp/screenshot
  taskresultPath: /tmp/taskresult
rpc:
  host: 0.0.0.0
  port: 5001
  authKey: ZduibTKhcbb6Pi8W
database:
  host: 127.0.0.1
  port: 3306
  name: nemo
  username: nemo
  password: nemo2020
rabbitmq:
  host: localhost
  port: 5672
  username: guest
  password: guest

6、conf/worker.yml

rpc:
  host: 0.0.0.0
  port: 5001
  authKey: ZduibTKhcbb6Pi8W
rabbitmq:
  host: localhost
  port: 5672
  username: guest
  password: guest
api:
  fofa:
    name:
    key:
  icp:
    name: chinaz
    key:
portscan:
  ping: false
  port: --top-ports 1000
  rate: 1000
  tech: -sS
  cmdbin: masscan
domainscan:
  resolver: resolver.txt
  wordlist: subnames.txt
  massdnsThreads: 600
pocscan:
  xray:
    pocPath: thirdparty/xray/xray/pocs
    latest: 1.8.2
  pocsuite:
    pocPath: thirdparty/pocsuite/some_pocsuite
    threads: 10

7、安装pocsuite3 (可选)

pip3 install pocsuite3

运行

1.mysql和rabbitmq

brew services run [email protected]
brew services run rabbitmq
2. worker
./worker_darwin_amd64
3. web app
./server_darwin_amd64

Demo

默认监听端口为5000,默认密码 nemo ;通过“系统设置–配置管理”更改默认密码。

Nemo 渗透测试自动化信息收集平台 开源工具
Nemo 渗透测试自动化信息收集平台 开源工具
Nemo 渗透测试自动化信息收集平台 开源工具
Nemo 渗透测试自动化信息收集平台 开源工具
Nemo 渗透测试自动化信息收集平台 开源工具
Nemo 渗透测试自动化信息收集平台 开源工具
Nemo 渗透测试自动化信息收集平台 开源工具
Nemo 渗透测试自动化信息收集平台 开源工具
Nemo 渗透测试自动化信息收集平台 开源工具
Nemo 渗透测试自动化信息收集平台 开源工具
Nemo 渗透测试自动化信息收集平台 开源工具

版本更新

  • 2.4.17:2022-3-8,增加Hunter资产接口(在worker.yml中增加hunter的key);
  • 2.4.16:2022-2-18,修改Fofa的API接口(fofa.so->fofa.info),去除只获取前1000条的限制(获取的记录数量由API的会员等级决定);
  • 2.4.15:2022-1-25,增加Quake资产接口(需要“会员”级别的API KEY;在worker.yml中增加quake的key);
  • 2.4.14:2022-1-12,增加Server和Worker的Docker构建文件,提高worker部署的伸缩性;
  • 2.4.13:2022-1-8,增加导入fscan的扫描结果(由于只有txt方式,通过正则匹配提取IP、端口及一些重要信息,不保证百分百全部导入);
  • 2.4.12:2022-1-4,修复域名扫描同时进端口扫描时不正确创建任务导致worker退出的Bug;
  • 2.4.11:2022-1-1,增加目录遍历扫描(dirsearch,建议谨慎使用);
  • 2.4.10:2021-12-31,增加子域名爬虫功能(感谢 crawlergo 开源的代码);
  • 2.4.9:2021-12-28,增加域名和IP的CDN识别(借鉴 github.com/timwhitez/Frog-checkCDN);
  • 2.4.8:2021-12-13,增加根据favicon.ico获取IconHash指纹功能;
  • 2.4.7:2021-12-9,增加导入本地扫描结果功能(支持nmap/masscan的XML文件),增加保存并查看任务执行结果的JSON格式的文件;优化FOFA查询后获取IP与域名的Web指纹信息;更新Xray版本为1.8.2;
  • 2.4.6:2021-12-8,更新指纹识别”侦查守卫”的JSON结果的解析;
  • 2.4.5:2021-12-7,增加调用ObserverWard获取应用系统的指纹信息,指纹信息来源于 FingerprintHub
  • 2.4.4:2021-10-18,对新建任务增加部份提示信息,便于掌握任务执行的参数;状态信息可手动刷新和查看正在执行的任务;
  • 2.4.3:2021-10-13,增加IP扫描的masscan+nmap方法,masscan快速进行端口开放扫描,nmap用-sV进行详细扫描;
  • 2.4.2:2021-10-9,增加IP扫描的“探测+扫描”模式任务,增加内网资产收集的便利性;去除whatweb的安装和使用(HTTPX已基本可替代其功能);
  • 2.4.1:2021-9-15,支持扫描任务按IP和端口进行多维度切分,使任务在多个worker之间均衡分布执行;
  • 2.4.0:2021-9-10,使用RPC架构,优化server与worker之间的同步、server与worker的配置文件分离;增加在线的IP信息、登录验证码、按发现时间筛选资产功能。
  • 2.3:2021-8-25,使用docker-compose构建Docker,修改数据库连接重试功能,完善端口扫描及任务等信息;
  • 2.2:2021-8-2,增加基于Wappalyzer规则的指纹识别功能;
  • 2.1:2021-7-30,用Golang完成对原python3版本的重构;

项目地址

GitHub:https://github.com/hanc00l/nemo_go

转载请注明出处及链接

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注