fofa的使用与防护

fofa的使用与防护

fofa是个啥

FOFA是一款网络空间测绘的搜索引擎,旨在帮助用户以搜索的方式查找公网上的互联网资产。https://fofa.info

简单来说,FOFA的使用方式类似于谷歌或百度,用户可以输入关键词来匹配包含该关键词的数据。不同的是,这些数据不仅包括像谷歌或百度一样的网页,还包括像摄像头、打印机、数据库、操作系统等资产。

网络空间测绘可以被认为是网络空间的“地图”。就像谷歌地图或高德地图通过卫星图像对地形进行测绘,网络空间测绘也是通过技术探针对全球网络资产进行探测。

然而,网络空间分为公网和内网。FOFA主要针对公网上的资产进行探测,类似于谷歌地图上的建筑物(IP地址),虽然可以看到建筑物的外部结构和规模,但无法了解内部的情况。这是因为侵犯内网的隐私是违法的。

你可以将fofa理解为网安界的Google search,你可以通过一些特定的语法来获取特定的信息,比如说对应的IP或者端口

对于专业的网络安全人员,可以使用fofa来搜寻潜在的网络漏洞;对于个人用户来说,可以在合法的前提下使用fofa来寻找一些“有意思”的东西

fofa使用

fofa的官网:https://fofa.info

乍一看是不是和百度或者Google的界面有点类似?都提供了一个搜索框

fofa有自己的一套语法:

逻辑连接符 描述
= 匹配,=""时可查询不存在字段或值为空的情况。
== 完全匹配,==""时可查询存在且值为空的情况。
&& 与(AND),所有条件必须为真。
`
!= 不匹配,!=""时可查询值为空的情况。
*= 模糊匹配,使用*?进行搜索。
() 确认查询优先级,括号内的内容优先级最高。
查询示例 描述
title="beijing" 从标题中搜索“北京”。
header="elastic" 从HTTP头中搜索“elastic”。
body="网络空间测绘" 从HTML正文中搜索“网络空间测绘”。
fid="sSXXGNUO2FefBTcCLIT/2Q==" 查找相同的网站指纹。
domain="qq.com" 搜索根域名带有qq.com的网站。
icp="京ICP证030173号" 查找备案号为“京ICP证030173号”的网站。
js_name="js/jquery.js" 查找网站正文中包含js/jquery.js的资产。
js_md5="82ac3f14327a8b7ba49baa208d4eaa15" 查找js源码与之匹配的资产。
cname="ap21.inst.siteforce.com" 查找cname为”ap21.inst.siteforce.com”的网站。
cname_domain="siteforce.com" 查找cname包含“siteforce.com”的网站。
cloud_name="Aliyundun" 通过云服务名称搜索资产。
product="NGINX" 搜索此产品的资产。
category="服务" 搜索此产品分类的资产。
icon_hash="-247388890" 搜索使用此 icon 的资产。
host=".gov.cn" 从url中搜索”.gov.cn”搜索要用host作为名称。
port="6379" 查找对应“6379”端口的资产。
ip="1.1.1.1" 从ip中搜索包含“1.1.1.1”的网站。
ip="220.181.111.1/24" 查询IP为“220.181.111.1”的C网段资产。
status_code="402" 查询服务器状态为“402”的资产。
protocol="quic" 查询quic协议资产。
country="CN" 搜索指定国家(编码)的资产。
region="Xinjiang Uyghur Autonomous Region" 搜索指定行政区的资产。
city="Ürümqi" 搜索指定城市的资产。
cert="baidu" 搜索证书(https或者imaps等)中带有baidu的资产。
cert.subject="Oracle Corporation" 搜索证书持有者是Oracle Corporation的资产。
cert.issuer="DigiCert" 搜索证书颁发者为DigiCert Inc的资产。
cert.is_valid=true 验证证书是否有效,true有效,false无效。
cert.is_match=true 证书和域名是否匹配;true匹配、false不匹配。
cert.is_expired=false 证书是否过期;true过期、false未过期。
jarm="2ad...83e81" 搜索JARM指纹。
banner="users" && protocol="ftp" 搜索FTP协议中带有users文本的资产。
type="service" 搜索所有协议资产,支持subdomain和service两种。

fofa的防护

fofa的使用有可能暴露我们的服务,在各种论坛上我们经常可以看到各种使用fofa进行扫描然后进行深透攻击获取用户数据的事情

我们不能有害人之心,但同时我们也要有所防护,以下是我总结出的一些方法:

  1. 使用Nginx或者Caddy等进行反向代理,尽量少的暴露其他端口

    fofa扫出来的经常都是一些端口,我们使用这些web服务器进行反向代理,就不必暴露除80和443以外的端口了。我们就只需要在云服务或者ufw中暴露最少的端口,减少暴露风险

    如果你是使用docker部署的服务,那么可以使用docker内的网络,这样就不需要开放云防火墙的端口了

    你可以使用以下命令查看:

    1
    ip addr show docker0
    1
    2
    3
    4
    4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:e4:a3:b5:b9 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
    valid_lft forever preferred_lft forever

    这里的IP就是172.17.0.1,使用这个就不需要开放防火墙的端口了

  2. 修改用户名和默认密码,设定特定权限

    如果你不得不要暴露端口了,那么请一定要修改用户名和密码

    较早4.0版本前的qb设置使用的是默认密码,经常出现被“黑”的情况

    至于权限未设定而造成损失的在alist中尤为突出,经常有人不禁用guest账户,泄漏大量私人数据(哪怕alist文档中明确写明了要注意隐私问题

  3. 限制IP访问(未明确使用

    可以通过限制fofa的IP来避免被扫描,但是这种方法实际上很难实现,因为除了fofa还有其他的空间测绘程序,比如说360的