在渗透测试中,第一步莫非搜集信息,而搜集信息其被动搜索方法是很不错的。为什么?对于搜集信息被主机检测到的可能性来说,被动搜索是最低的,其次是主机检测、端口扫描等,然后就是主机服务、应用、补丁等。对于被动搜集,Recon-NG 是一个很不错的工具。
何为 Recon-NG,主要用来对于目标的信息搜集,可以搜集哪些东西?ip 地址,子域名,子域名 ip,位置,邮件地址,用户,密码等。
输入recon-ng就进入工具
[recon-ng][default] > help
Commands (type [help|?] ):
---------------------------------
add 将记录添加到数据库中
back 退出当前回话
delete 从数据库中删除记录
exit 退出框架
help 显示帮助
keys 管理框架API键
load 加载指定模块
pdb 打开 Python 的 Debug 回话
query 查询数据库
record Records commands to a resource file
reload 重新加载所有模块
resource Executes commands from a resource file
search 搜索可用的模块
set 设置模块的选择
shell 执行shell命令
show 显示各种框架项目
snapshots 管理工作区快照
spool Spools output to a file
unset 附件模块选择
use 加载指定的模块
workspaces 管理工作区
命令技巧:workspaces 然后双击tab会显示这个命令下可使用的参数。其他命令也行。
Recon-ng -w 公司名 或者 workspaces add 公司名字
有的模块需要使用网站的keys
keys list 这个命令可以查看需要key的网站
keys add twitter_api keys码
上面添加keys
加入要搜索和bing相关的模块
srarch bing
每次run后数据都保存再一个表格中
show hosts 可以查看查询结果
show option 可以查看当前使用模块可以设置的参数
set命令可以设置参数
set SORCE query select from hosts from select where host like ‘%sina.com.cn%’
上面是把模块的SORCE设置为select from hosts from select where host like ‘%sina.com.cn%’
1.刚启动时我们会发现命令行前的符号为 default,也就是默认空间的意思,准备一个新的目标时建议新建一个工作空间,命令如下:
workspaces add 公司名字
2.可以使用搜索引擎来搜索相关信息,以前搜索引擎有三个,分别是 google、baidu、bing。
baidu 模块下架了,那怎么办,使用 bing 即可,其命令如下:
use recon/domains-hosts/bing_domain_web
set SOURCE XXXX
run
3.搜索后可进行暴力破解子域名,其模块是 recon/domains-hosts/brute_hosts, 其命令如下:
use recon/domains-hosts/brute_hosts
set SOURCE XXXX
run
4.随后可使用 netcraft 查询域名,什么是 netcraft?它用来查询网站信息,例如服务器、web 服务器、机房等。怎么了解它呢,你可以直接访问官网 https://netcraft.com,然后输入域名即可查询。这里的命令如下:
use recon/domains-hosts/netcraft
set SOURCE XXXX
run
这里有一个坑需要注意,它可能会提示你 timed out,提示你超时,不要慌,这个网站打开可能会慢点,但是可以访问。不如再 run 一下试试看。
5.然后可以将所有的域名解析成 ip 地址,其命令如下:
use recon/hosts-hosts/resolve
set SOURCE XXXX
run
6.接下来可以将所有的域名解析成主机名,其用到的模块是 recon/hosts-hosts/reverse_resolve,命令如下:
use recon/hosts-hosts/reverse_resolve
set SOURCE XXXX
run
7.这时可以去指定的域名中查找一些隐私文件,也就是泄露文件,何为泄露文件,例如 robots 文件、phpinfo 文件、xml 配置文件等等,有很多,具体的文件可以看命令的执行过程,其命令如下:
use discovery/info_disclosure/interesting_files
set SOURCE XXXX
run
8.这时可以探测其 ip 的地址位置,用到的模块是 recon/hosts-hosts/ipinfodb,这里有一个坑需要注意下,你直接用是不行的,因为 ipinfodb 模块要依赖 ipinfodb 的 API 密钥,具体的获取方法和配置方法开头有记录,配置好后,执行以下命令即可:
use recon/hosts-hosts/ipinfodb
set SOURCE XXXX
run
9.查询地址后可以再查询一下 whois 的邮件地址,用到的模块是 recon/domains-contacts/whois_pocs,其命令如下:
use recon/domains-contacts/whois_pocs
set SOURCE XXXX
run
10.最后可以搜集一下公共的 PGP 存储中的邮件地址,什么是 PGP,它用来对邮件进行加密,执行以下命令:
use recon/domains-contacts/pgp_search
set SOURCE XXXX
run
11.然后可以使用 hibp_paste 模块,什么是 hibp_paste,它可以根据你的邮件地址去搜索,看你的邮件密码有没有在某些地方泄露,想了解你可以访问官网:https://haveibeenpwned.com,这个只作为了解,对于国内测试来说,可以不使用这个模块,因为这个是针对国外的,咱们使用可能效果不太理想,可忽略。其命令如下:
use recon/contacts-credentials/hibp_paste
set SOURCE XXXX
run
12.至此,可以用此流程来搜集一个目标网,然后将以上的搜集内容导出报告即可,以 html 格式为例,用到的模块是 reporting/html,其命令如下:
use reporting/html
创建报告后设置一下创建者名称,如下命令:
set CREATOR xxx
同时,也设置一下客户的名称,如下命令:
set CUSTOMER xxx
最后执行 run 命令运行,会输出其报告的 html 文件地址,然后 exit 退出。
Recon-ng有侦查,发现,汇报,和攻击四大块(import没发现有多大的用处,所以暂时为四大块),可用show modules查看有哪些模块。
Profiler模块: 查询某个用户名在那些网站(知名)有注册。
可用 search profiler 查询在具体路径
使用模块:use recon/profiles-profiles/profiler
查看用法:show option 或者 info info更加详细
根据提示,需要设置SOURCE选项,用命令:set SOURCE cesign
然后运行:run
查看结果(根据提示更新了profiles表,查看表的命令为show 表名) show profiles
Interesting_files模块:查找某网站的敏感文件
命令跟前面一样
Search interesting_files
Use discovery/info_disclosure/interesting_files
Show info #查看用法,可以看到参数比较多,含义我就不解释了
command_injector模块:命令注入,多用于木马文件
Search command_injector
Use path-to/command_injector
Show info #可以看到具体的参数
set base_url http://172.16.227.128/other/a.php