fofa的使用与防护
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进行扫描然后进行深透攻击获取用户数据的事情
我们不能有害人之心,但同时我们也要有所防护,以下是我总结出的一些方法:
使用Nginx或者Caddy等进行反向代理,尽量少的暴露其他端口
fofa扫出来的经常都是一些端口,我们使用这些web服务器进行反向代理,就不必暴露除80和443以外的端口了。我们就只需要在云服务或者ufw中暴露最少的端口,减少暴露风险
如果你是使用docker部署的服务,那么可以使用docker内的网络,这样就不需要开放云防火墙的端口了
你可以使用以下命令查看:
1
ip addr show docker0
1
2
3
44: 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
,使用这个就不需要开放防火墙的端口了修改用户名和默认密码,设定特定权限
如果你不得不要暴露端口了,那么请一定要修改用户名和密码
较早4.0版本前的qb设置使用的是默认密码,经常出现被“黑”的情况
至于权限未设定而造成损失的在alist中尤为突出,经常有人不禁用guest账户,泄漏大量私人数据(哪怕alist文档中明确写明了要注意隐私问题
限制IP访问(未明确使用
可以通过限制fofa的IP来避免被扫描,但是这种方法实际上很难实现,因为除了fofa还有其他的空间测绘程序,比如说360的