网络空间测绘技术的衍生品fapro

匿名者  955天前

1.png

很长一段时间以来,我都有一个比较困惑的点:如何证明fofa的协议识别和指纹规则是全面深入且准确的?

我们很难自证,除非是用户对比,但是用户对比都叫抽样对比,而且是他们能够理解的知识体系的抽样对比,这种情况反而把我们的优势给掩盖了。另一方面,大家比较迷信nmap/whatweb等国外的技术,当然他们都是非常优秀的开源项目,也有很长时间的积累,但是并不能证明它们就是完美的没有改进空间的。我之前也写过几篇文章来证明这一点,创新就是看到了现有技术的不完美,国内技术是能够达到世界一流水平的。基于之前工作经历的认知,我认为基于以前一个两个人来维护一个庞大的规则库的时代已经过去了,如果李飞飞还是自己来收集图片,可能这辈子都没有imagenet出来,所以基于群体智慧的输出是能够解决很多问题的,这也就是为什么fofa做了很多基础的工作就是希望能够让大家来提意见,让大家来帮忙一起改进,fofa非常注重用户的规模。

后来我们在想,能不能输出一个小的工具,让我们:能够模拟所有支持的协议,能够模拟所有的指纹(硬件和应用),单机能够模拟一个足够庞大的网络,网络上每一个IP都能模拟一个完整的设备。我们希望协议数量能够pk掉wireshark,希望规则数量能够覆盖所有nmap的知识库和whatweb的知识库,甚至能复现所有互联网上fofa认识的所有指纹。它是一个单机的工具,跨平台,中度的协议和应用模拟,开箱即用……总之我们做了大量的设想,现在我们输出了一个工具免费开放出来了:github.com/fofapro/fapro 这个有点中二的名字是我们一个同事起的,全称叫fake protocol server,尝试翻译应该就叫做“协议模拟服务器”。

其实协议模拟已经有很多现成的方案了,包括虚拟机的完整系统镜像的方式,也有基于docker的完整业务模拟的高交互式的方式,也有特别简单的req->resp方式的低交互式方式。各有优缺点,低交互的优点是轻量简单,但是功能很弱走不通流程,而高交互的问题就是太重了,部署复杂,能够模拟的协议和应用少。所以fapro从设计之初就考虑了这些因素,我们要求的是除非真正的人为参与判断的业务客户端,否则其他方式的识别引擎是无法分辨真假的(是的,连fofa和nmap在内的所有工具也都识别为真实的系统)。所以低交互的肯定不行,多发两个包就能看出真假,高交互的也不行,太臃肿一点艺术性都没有。因此我们选择了让我们痛苦让用户舒服的方式:我们准备中度模拟所有的协议,真正的实现所有的业务交互,没有任何依赖的放在一个文件中来。

期间我们还是做了不少技术突破的,比如我们应该是第一个使用golang实现的支持模拟rdp登陆和显示图形的服务器;比如我们应该也是第一个实现了smb共享效果和dcerpc认证效果的golang服务器。绿色轻量跨平台单文件,丰富的配置接口,丰富的日志字段,图形界面的动态启停等等特性,我们自己感觉是fapro麻雀虽小五脏俱全,一个新的网络安全的小工具,可能开启另一段故事(总之我们很擅长折腾就对了)。

可以稍微来体验一下我们的效果:

rdp协议服务模拟:

Image

ssh协议服务模拟:

Image

初心其实比较简单,就是保留协议研究和指纹研究的环境,用于积累知识库。越做到后来越发现,它的场景可能解决更多的问题,比如fapro还可以使用的几个场景:
一)特定协议研究的快速环境,节省搭建服务器和找客户端工具的时间;
二)一个庞大的虚拟网络的模拟,可以用于进行不确定范围的网络空间测绘对比测试;
三)一个单机或者分布式的蜜罐系统,可以用在企业内外网做异常监控和分析;
希望大家能够多提宝贵意见,帮助我们一起完善。我们要做行业内支持协议最多,模拟业务系统最全面的网络模拟器,fapro的使命就是这个,注定又是一个漫长的过程。

最新评论

昵称
邮箱
提交评论