目录导航
Nemo简介
Nemo是用来进行自动化信息收集的一个简单平台,通过集成常用的信息收集工具和技术,实现对内网及互联网资产信息的自动收集,提高隐患排查和渗透测试的工作效率,用Golang完全重构了原Python版本。
功能列表
1、IP资产
- Masscan、Nmap端口扫描
- IP归属地(纯真离线数据)
- 自定义IP归属地、Service、蜜罐
- 导入本地的Masscan、Nmap端口扫描结果
- 导入fscan扫描结果(适用于内网渗透的资产信息收集)
- CDN识别
2、域名资产
3、指纹信息
- HTTPX
- ScreenShot (调用chrome headless)
- Wappalyzer (基于webanalyze 代码,可自定义指纹规则)
- ObserverWard (指纹信息来源于https://github.com/0x727/FingerprintHub)
- IconHash(基于mat/besticon和Becivells/iconhash项目)
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 ;通过“系统设置–配置管理”更改默认密码。











版本更新
- 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
转载请注明出处及链接