洋葱网络Tor流量检测方案
1.Tor简介
Tor通过连接一系列虚拟隧道从而允许组织和个人通过公共网络共享信息而不会损害隐私。同样,Tor是一种有效的审查规避工具,允许其用户访问其他被阻止的目的地或内容。Tor的用户越多,节点越多,匿名性就越受到保护。Tor网络上的数据包不是采用从源到目的地的直接路由,而是通过几个中继采用随机路径,因此任何单点的观察者都无法知道数据来自何处。客户端为电路中的每一跳协商一组单独的加密密钥,以确保每一跳在通过时不能跟踪这些连接。由于每个中继在电路中看到不超过一跳,因此窃听者和受损中继都不能使用流量分析来链接连接的源和目的地。为了提高效率,Tor软件使用相同的电路进行相同的十分钟左右的连接。后来的请求被赋予一个新的电路,以防止人们将您之前的行为与新的行动联系起来。
2. Tor原理
2.1获取节点列表
步骤一:Tor客户端连接Tor网络,获取Tor网络节点列表,如图1:
图1
2.2建立加密通道
图2
步骤二:随机选择三个节点建立连接并生成密钥开始加密传输,如图2。
2.3定期更新节点
步骤三:连接会定期进行更新,减小被发现和破解的可能性,如图三。
图3
2.4完整流程说明
图4
如图4所示,Bob为了访问Alice,先访问Tor的目录服务器,获取一部分Tor节点的IP地址,并从中随机选择三个节点的IP地址A、B、C。
a) Bob和节点C通过Curve25519椭圆曲线算法协商一个对称密钥keyC。之后,Bob和节点C之间就会用这把对称密钥keyC进行加密通信。
b) Bob把B的IP地址和与B协商密钥所需的参数用对称密钥keyC加密后发送给C。C用keyC解密后,将Bob与B协商密钥所需的参数发送到B的IP地址。B收到参数后产生了对称密钥keyB,并将与Bob协商密钥所需的参数发还给C。C将参数通过keyC加密后发还给Bob。Bob通过算法计算出对称密钥keyB。
c) Bob通过相同的方法和A协商出keyA。
d) 至此,Bob有了三把钥匙keyA、keyB、keyC。Bob往Alice发送数据包时,先将数据Data用keyA加密,再用keyB加密,再用keyC加密,层层包裹,然后发往节点C。节点C解开一层加密,发往节点B。节点B解开一层加密,发往节点A。节点A解开一层加密,得到明文,最终发送给Alice。
3.检测方案
3.1方案1 基于TLS指纹的Tor流量识别
以上是TLS加密流量传输过程,我们通过全流量平台获取所有TLS访问数据,在此基础上过滤出所有“服务器发送Certificate”的数据包,之后查看所有的证书的授权商和授权时间。证书来源为******,地址为,证书的时间为15年到25年。
一般Tor流量的证书起效时间与当前时间接近,证书周期短,证书颁发机构和拥有者名称结构固定。具体的字段:validitty获取证书时间、Certificates获取证书相关内容,从证书的相关内容出发做出判断。
3.2基于报文长度分布的Tor流量识别
Tor流量可认为是少数典型长度报文大量出现,但由于上层应用的不同、Tor读写事件调度的不确定性和网络环境的实时变化,具体到每条Tor流量时其报文长度分布可能各不相同,因而难以建立统一的报文长度分布的线性模型。
可以采用支持向量机分类算法判断待识别流的报文长度分布是否满足Tor流量的分布特征。由客户端发出的流量为上行流量,接收到的流量为下行流量。在特征选取阶段,针对数据集中所有Tor上行流量,将典型长度报文按出现的频率由高到低排序,并选取频率和值大于设定的门限值,如90%的前l位频率组成特别流量(Tor流量)的报文长度分布,统计每条Tor上行流量和其他类型流量中相同特征报文出现的频率,形成相应的区分标准,从而在其他场景中应用判断。
点赞 收藏 分享 文章举报 代码人的自白 发布了49 篇原创文章 ·
获赞 5 ·
访问量 3万+ 私信 关注
1.
openKeys={[openKey]}
2.this.state = {
selectedKey: this.props.location.pathname, //选中
openKey: ”” //展开}
3.点击事件
menuClick =e=>{this.setState({selectedKey:e.key})}
4.更新默认状态
componentDidMount(){
const {pathname} = this.props.location;let path = pathname.split(‘/’);
if(pathname.split(‘/’).length>3){path = path[path.length-2];this.setState({openKey:path})}}
5.展开收缩更新状态
onOpenChange = (k) => {
if(k.length>1){this.setState({openKey:k[k.length-1],});}else{this.setState({openKey:”,});}};
原文:https://blog.csdn.net/luckysyy/article/details/83621591
正在制作的游戏分为两个项目,一是游戏本体,二是关卡编辑器,两个项目需要共用文件,但是事情进行的并不顺利,最终采用了下面的方法
在pubspec.yaml中直接导入package项目
dependencies: meaty_plant_public_package: path: 完整本地路径,到项目文件夹 巨坑警报:本地package内资源的使用
以下方法仅用于生成调试版,正式版会出错!正式版时还是需要把资源文件复制到主项目内使用
官网上的写法,我尝试了很多次都没有成功。在路径上各种出错。
想要使用资源,目前我只尝试到了下面的方法
1、在package文件夹目录下增加资源文件夹,这里我们使用images,并加入图片
2、把images文件夹复制进lib里,和dart文件们放一起
3、在package的pubspec.yaml中加入下列代码
2019-07-10更新:本地package内资源的使用
1、在package文件夹目录下增加资源文件夹,这里我们使用images,并加入图片
2、在package的pubspec.yaml中加入下列代码即可,目前的flutter版本已经修正了图片资源的错误,在调试版和发布版均可使用
assets: - images/ 3、在主项目中调用时需加上包名
上面四步错一步就会出现各种异常
之前采用的方式是import moudle,但是不好使。
发生过如下问题:
1、无法访问图片资源。我尝试了数种方式,没有一种能访问到
2、第二个项目干脆在import moudle本地package时直接甩给我一句Specify location of the gradle or android eclipse project,无法导入,最终没有解决
3、整个项目被拷贝到主项目中,同步起来很麻烦
最近给自己电脑装了个黑苹果,感觉还不错,给大家看一下。
装好了之后发现了两个问题:电脑无法识别USB3.0、电脑的电池电量不显示。在这里把解决方案分享出来,共勉之。
电脑无法识别USB3.0 先下载CLover Configurator,然后找到如下图所示界面
然后用Sublime Text3打开config.plist文件
搜索找到KextsToPatch
将下面文字,复制粘贴过去,并保存重启即可生效, USB3.0就可以使用了。
Comment USB 10.13.4+ by PMHeart Disabled Find g32UDw+DlwQAAA== InfoPlistPatch MatchOS 10.13.x Name com.apple.driver.usb.AppleUSBXHCI Replace g32UD5CQkJCQkA== 参考自:https://www.jianshu.com/p/262ec6726d41
电脑的电池电量不显示 以下资料来自远景论坛:
电池驱动:http://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1794975&highlight=%B5%E7%B3%D8%C7%FD%B6%AF
安装驱动软件及教程:http://bbs.pcbeta.com/viewthread-966102-1-1.html
yum install tor vim /etc/tor/torrc 加入
HiddenServiceDir /var/lib/tor/hidden_service/ HiddenServicePort 80 127.0.0.1:80 第一个是生成暗网服务的目录,第二个是开放的端口以及映射的地址
这里映射的是生成在80端口 映射本地的80端口
cat /var/lib/tor/hidden_service/hostname 拿到你的洋葱地址
粘贴到浏览器访问.
网工面试99%都会遇到的问题——OSPF 数据包类型
OSPF的包有多层封装,可以象剥洋葱皮一样看每一层。
如图1所示,最外层是IP头(思科的OSPF包允许的最大尺寸是1500字节),IP头里面封装的是5种OSPF包类新中的一种。
每一种包以自己的包头开始,包头后面根据不同的包类型,内容也有所不同,比如Hello包的内容是邻居列表;链路状态请求包包含了一系列LSAs描述;LSAs更新包则包含了一系列的LSAs。
OSPF包的多层封装
这里需要注意的是,OSPF的包只能在邻居间互相传递,它们绝对不能被路由到始发网段之外。
利用任何一个抓包软件抓到的OSPF包都可以看到,OSPF包的TTL值为1,这也就保证了这个包只能被传一跳。
下面来详细分析一下每一种包头:
OSPF包头,5种OSPF包类型的包头,结构完全一样,只是包的类型和数据不同
OSPF包头
每一个OSPF包都是以一个24字节的IP包头开始的。
Version 字段是OSPF的版本号,现在最新的版本号为2。
Type 字段是本OSPF包的类型,OSPF共有5种类型的包
类型代码 1 为 Hello
类型代码 2 为 Database Description
类型代码 3 为 Link State Request
类型代码 4 为 Link State Update
类型代码 5 为 Link State Acknowledgment
Packet Length 字段是本OSPF包的长度(包括包头),单位是字节。最长为1500字节
Router ID 字段是OSPF包的始发路由器Router ID
Area ID 字段是OSPF包始发的区域ID,也就是始发的发送接口属于的区域ID,若这个是在virtual-link上发送,则Area ID是0,因为virtual-link就是属于Area 0的。
Checksum 字段是对整个包的标准的IP校验和。
AuType 字段是OSPF启动的认证模式
0 未启动认证
1 明文验证
2 MD5验证
Authentication 字段是包被认证所必须的信息。
若认证类型为0,则本字段的内容被忽略;若认证类型为1,则本字段包含最长为64比特的密码;若认证类型为2,则本字段包含Key ID、认证数据的长度、非递减序号。
0x00:使用原因 我们在做渗透测试的时候,经常会遇到这种情况,测试跨站可能有些功能插入恶意脚本后无法立即触发,例如提交反馈表单,需要等管理员打开查看提交信息时才会触发,或者是盲注跨站,盲打 XSS 这种。再例如 SSRF,如果程序不进行回显任何信息,而只提示你输入的是否合法,那么也无法直接判断程序存在 SSRF 漏洞,我们可以叫盲 SSRF。再例如 XXE,引入外部文件时,如果程序也不返回任何信息和引用文件的内容,而只提示输入的是否有误,那么也无法直接判断程序是否存在 XXE 漏洞,我们也可以叫盲 XXE。总之,程序不进行详细的回显信息,而只是返回对或者错时,我们都可以叫它盲。
解决办法是,我们需要一个外部的独立的服务器,可以通过域名 url 进行访问。然后在测试盲跨站插入恶意脚本时带上这个服务器的地址,在测试盲 SSRF 时读取的文件 url 写我们这个服务器的地址,在测试盲 XXE 时引入的外部实体地址也写我们这个服务器的地址。如果存在上述的这些问题,那么目标服务器就会去访问我们自己的服务器,我们自己服务器要做的就是记录别人访问自己的信息,记录其发送内容相应内容等,因为目标服务器不会给前台返回任何信息,而在和我们外部服务器交互时,我们外部服务器会记录其交互的过程和内容,从而有利于我们判断漏洞的存在。
明白原理后,Burp 给我们提供了这个外部服务器,叫 Collaborator,对于 Collaborator 服务器,我们有两种使用方式,第一个是使用 burp 官方提供的,第二个是自己搭建。本文章记录 burp 官方提供的使用方法,至于自己搭建如果大家感兴趣可以在网上搜索相关的教程内容。
0x01:Collaborator 介绍 对于 Collaborator 服务器,我们这里简单介绍下它应该拥有哪些功能。首先它要能捕捉到 burp 发出的 payload 触发目标与外部系统发生数据的交互行为,其次它自己与目标产生交互的数据要能够返回到 burp,也就是返回给攻击者,也就是我们。
对于 Collaborator 服务器,我们这里再简单的介绍下它应该有哪些服务,首先它是公网 ip,其次它要有自己的域名,并且这个服务器要注册为该域名的权威 dns 服务器。然后这个服务器要提供 dns 服务,并且可以相应任何对它的 dns 请求。最后它需要提供 http 和 https 服务,且需要使用一个有效的 ssl 证书。对于为什么要提供 dns 和 http、https 服务很好理解,payload 如果可以执行或者可以允许远程加载,那么就需要用 dns 来解析我们的域名,而产生的交互则需要 http 和 https 来提供。
0x02:Collaborator 原理 我们知道了使用原因和其具有的功能后,我们再来简单看下它的原理,首先,我们先来看下平时的测试过程,如下图。
耳机插上之后扬声器也出声是什么鬼啊,关上如图所示的按钮耳机就没有声音,打开耳机扬声器都有声音,播放设备里也识别不到耳机这个设备,啊啊啊啊啊要崩溃了,客服说装驱动,去官网下的也还是不行,郁闷了
在渗透测试时,我们经常会遇到目标处于CloudFlare或其他cdn服务之后,使我们无法发现原始服务器IP,难以使用某些渗透手段。但是,这类网站一旦出现设置不当,就有可能暴露真实IP。而一旦我们获得了真实IP,自然就可以对这些网站进行暴力破解,DDoS攻击等等。注意,隐藏Tor后的网站也有这种风险。以下将介绍几种发掘网站真实IP的方法,希望大家能针对性地使用。
1.SSL证书 1.1 使用给定的域名
假设你有一个网站,域名为xyz123boot.com,服务器真实IP是136.23.63.44。CloudFlare为网站提供DDoS保护,Web防火墙和其他一些安全服务。你的Web服务器支持SSL并有证书,因此CloudFlare与你的服务器之间的通信就像你的网站用户和CloudFlare之间的通信一样加密(即SSL不够灵活)。乍一看,好像没什么问题。
但是,此时,真实IP的443端口(https://136.23.63.44:443)的证书会直接暴露在互联网上。若对全球IP的443端口进行扫描,就能在某个IP的443端口上获取涉及 xyz123boot.com 的有效证书,而这个IP就可以说是服务器的真实IP。
很多网络搜索引擎可以收录证书信息。你唯一需要做的就是将网站域名的关键词进行搜索。
例如,对于Censys网络搜索引擎,xyz123boot.com的证书的搜索语句如下:
parsed.names: xyz123boot.com
只显示有效的证书:
tags.raw: trusted
在Censys上对这些搜索条件进行布尔组合即可。最后搜索语句:
parsed.names: xyz123boot.com and tags.raw: trusted
Censys将显示符合上述标准的所有证书,这些证书是他们在全球扫描中找到的。
逐个单击搜索结果,你可以在详情页面右侧的“浏览”中发现多个工具,然后我们点击What's using this certificate? > IPv4 Hosts。
这时你可以看到使用这个证书的所有IPv4主机列表。其中某个就可能是真实IP。
最后,你可以直接导航到某个IP的443端口进行验证,看它是否重定向到xyz123boot.com?或者是否会直接显示网站?
1.2 通过给定的证书 你是联邦调查局,想关闭一个在暗网中的cheesecp5vaogohv.onion域名的色情网站。那么你就必须要原始IP,这样才能找到主机,找到运营商,最后找到服务器所有者。
此时,利用网络搜索引擎,我们可以查找使用相同SSL证书的IPv4主机,只需将其SHA1指纹(没有冒号)粘贴到Censys IPv4主机搜索中即可。不是所有服务器的SSL都配置严谨。
2.DNS记录 也许你的网站在使用CloudFlare之前曾短暂将真实IP暴露于公网。此时,如果Censys的DNS记录有你的网站的A记录,就会暴露你的网站的真实IP。
有一个专门用于查询域名记录的网站SecurityTrails。只需在搜索字段中输入网站域名,然后按Enter键即可。你就能在“历史数据”中找到惊喜。
除了以前的A记录,即使是当前的DNS记录也可能泄漏真实IP。例如,MX记录,即邮件交换记录。如果邮件服务器和目标网站在同一个服务器上,则真实IP可能存在于MX记录中。
3.HTTP头 通过网络搜索引擎,你甚至可以通过比较HTTP头来查找原始IP。
特别是当目标网站有一个非常独特的服务器请求头以及网站所使用的各种软件及其版本时,都能大大减轻查询的难度。
而且正如1.1节中所述,您可以在Censys上组合查询参数进行搜索。再配合一些其他信息,就能快速定位到网站。
假设你的服务器的请求头组成大致和1500个其他Web服务器的请求头相同,你的网站还使用一个新的PHP框架,这也是很独特的HTTP标头(例如:X-Generated-Via:XYZ fr amework),目前约有400名网站使用该框架。就这样不停比对,运气好的情况下,很快就能找到真实IP。
例如,Censys上涉及服务器请求头的搜索参数是
80.http.get.headers.server:
查找使用了CloudFlare服务的网站的语句如下:
80.http.get.headers.server: cloudflare
4.应用和服务 网站本身的很多功能可能并不完善,包括完整网站所使用的开源软件包,自编写的代码等都有可能存在某些“轻微”的漏洞,例如,报错信息不规范等。而这些信息就很有可能缩小我们的搜索范围。此外,即使是正常的网站服务,也有可能为我们所用。例如你需要在目标网站上设置一个头像,而且是通过提供图片URL的方式(不是上传图片)。那么目标网站可能主动从其他网站下载图片,如果你控制着放置图片的网站。那么目标的真实IP就在日志中。最重要的就是多多尝试,网站管理员可能会犯很多错误。
5.内容 在某些情况下,直接访问目标服务器IP也会返回网站内容。那么,问题就简单了,网络搜索引擎能帮我们大忙。在网站的源代码中,很可能存在独特的代码片段,以及很多第三方服务的痕迹(例如Google Analytics,reCAPTCHA)。例如,HackTheBox网站的Google Analytics Tracking代码如下:
ga(‘create’, ‘UA-93577176-1’, ‘auto’);
通过使用80.http.get.body:参数,我们就可以在Censys的数据中搜索出对应的网站。
当然,普通的搜索字段是有局限性。您可以在Censys上请求研究访问权限,这样就可以通过Google BigQuery进行更强大的查询。而在另一款网络搜索产品Shodan中,我们也可以根据http.html搜索参数进行相同的查询。
示例如下:
https://www.shodan.io/search?query=http.html%3AUA-32023260-1
后记 要找到隐藏在Tor或CloudFlare后面的原始IP需要一定的创造力。
使用tor的目的:保护隐私防止被追踪。
之前长城防火墙将tor的协议封闭掉了。但是现在tor利用云端技术,使得一部分人能够使用tor。tor由于使用的路由较大,延迟较大,网速较慢。
建议直接使用集成好的tor浏览器使用,避免了繁杂的配置过程。下面介绍linux环境下的使用。
下载tor:https://www.torproject.org/download/download-easy.html.en#linux(可能需要翻墙,否则长城防火墙会通过DNS重定向将网址变换到其他地址)这是一个集成了浏览器的tor包,不需要依赖包的安装
问题1:should not be run as root;
问题2:服务启动错误
下载好后打开文件夹,点击浏览器图标会发现在kali下禁止使用root账号登录。解决办法是进入子目录Browser,找到start-tor-browser,用gedit打开。点击“ctral+f”查找“root ”,将“-eq 0”改为“-eq 1” (“-eq 0”表示root账号),保存后再次双击浏览器图标,会提示又一个错误。这个错误是由于权限造成的,在终端切入相应路径查看tor的权限,可以发现这个文件的所有者不是root账户,要将其改成root账户。使用命令“chown -R root:root tor-browser_zh-CN” (加-R参数是子目录下也做相应改变)。然后再次点击浏览器图标可以发现没有提示错误,点击“连接”会没有反应,应为长城防火墙已将其封锁。需要点击配置,选择“是”,下一步后选择“使用集成的网桥进行连接,传输协议只有三个云端的能够使用,即meek-amazon、meek-azure和meek-google(亚马逊、azure和谷歌提供的桥接云)。点击下一步,“是否需要本地代理访问互联网,选择否”。之后点击连接即可。
当然也可以使用本地浏览器来使用tor,通过设置代理服务器。
注:最大化Tor Browser窗口之后,网站可获取显示器尺寸信息,从而跟踪客户,建议使用默认窗口大小。
暗网wiki(暗网一般使用onion作为根域名)
http://zqktlwi4fecvo6ri.onion/wiki/index.php/Main_Page(这个网站收集了大量暗网的地址)
注意:浏览暗网遵守道德法律规范,只看和技术相关的内容,其他不要涉及,否则后果自负。
点赞 2 收藏 分享 文章举报 若雨溪 发布了13 篇原创文章 ·
获赞 11 ·
访问量 7580 私信 关注