FATSuite
github地址:
https://github.com/zzheff/FATSuite
工具产生的背景
项目中通过Hunter、FOFA和Zoomeye获取到的资产较多且信息有滞后性。用oneforall等工具收集到的资产较多但信息不足。
且所有获取到的资产都需要逐个访问,花费一些不必要的时间,所以想有一款工具导入目标资产后,可以直接获取目标当下的页面截图、IP、IP地理位置、CIDR、状态码、中间件并自定义Title关键字进行筛选,这样可以更快速的定位薄弱目标。
工具的部分代码实现分享
主体功能实现:
使用了Chromeheadless,需要用户先下载Chrome浏览器和Chromdriver,为了方便用户使用,工具可以直接识别Chrome版本下载对应的Chromedriver。网上对于Chromeheadless的使用有非常多的说明:https://developer.chrome.com/blog/headless-chrome/
最基本的使用:
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless", "--window-size=1920,1200","--ignore-certificate-errors");
可以无界面打开、忽略证书错误。
截图功能使用实例:
chrome --headless --disable-gpu --screenshot https://www.chromestatus.com/
本工具为了加快Chromeheadless的截图速度提供了线程自定义功能,用户可以根据自己性能设置线程,工具默认线程是20,还有一些其他人提供的加快方法,仅供参考:
--proxy-bypass-list
--disable-dev-shm-usage
--disable-browser-side-navigation
https://stackoverflow.com/questions/69173469/meaning-of-selenium-chromeoptions
获取目标Title、状态码、IP等信息
最简单的实现方式就是HttpURLConnection函数中的自带方法
Pattern.compile("(<title>|<TITLE>)(.*?)(</title>|</TITLE>)");//获取Title
getHeaderField("Server"); //获取中间件
InetAddress.getByName(hostName).getHostAddress();//获取IP
工具里额外添加了自定义UA,使用了setRequestProperty方法。
con.setRequestProperty("User-agent",UA)
附加小功能实现:
关键字的匹配:
示例代码
for (int a=0;a<Keywords.length;a++){
if (Title.contains(Keywords[a])) {
return Keywords[a];
}
}
加载进度条:
为了方便用户打开界面时能直接看到目标资产的加载情况,使用Javafx中的Progressbar更加直观,需要注意的一点是多线程中使用Progressbar是无法正常加载的,所以建议使用监听模式。
示例代码
https://stackoverflow.com/questions/15506426/javafx-progressbar-doesnt-update
下载Chromrdriver文件:
示例代码
https://www.yiibai.com/java/java-download-file-url.html
缩略图代码:
TilePane tile = new TilePane(Orientation.VERTICAL);
tile.setTileAlignment(Pos.CENTER_LEFT);
tile.setPrefRows(10);
for (int i = 0; i < 50; i++) {
tile.getChildren().add(new ImageView(...));
}
https://docs.oracle.com/javase/8/javafx/api/javafx/scene/layout/TilePane.html
更加详细的Tile pane教程可以参考:
工具效果展示
FATSuite不仅可以获取基本的资产信息,还额外增加了CIDR,用户可以通过排序的方式更直观的获取目标资产的C段,方便进一步资产收集。
截图可以解决的痛点:
Title中没有关键字
指纹识别工具不准确
无法快速获取无验证码登录界面
...
缩略图:
通过缩略图可以更加直观快速的锁定薄弱目标
基于目前的版本,后续计划增加指纹识别、JS爬取功能,进一步锁定薄弱目标。
第一次学习JAVA并开发工具,师傅们有任何修改建议或者功能需求都可以和我联系。
原文始发于微信公众号(Wings安全团队):FATSuite开发
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论