Tor隐身大法 —— 用Tor来帮助我们进行渗透测试
nanshan 2024-10-14 11:28 12 浏览 0 评论
0x00 背景
(编者:在这篇文章里,Chris Crowley提供了一些利用Tor来进行渗透测试的方法,他提供的一些细节和脚本配置非常有用,尤其是他对Privoxy 的讨论部分,谢谢!)
By Chris Crowley
我认为渗透测试的真正价值是能模拟现实世界的真实攻击行为,所以渗透测试人员应该尽量将自己的行为与那些攻击者靠拢。但是与真的攻击者不一样的是,我们还是应该对我们的目标系统保持一定的谨慎和敏感,而攻击者肯定不会去管这些。
在这篇文章里,我向大家分享了一个我经常用的隐藏源IP的方法。一般来说,渗透测试人员有两个原因需要隐藏他们的真实IP。首先,在测试过程中,我们需要访问的资源可能是非法的恶意资源(或者怀疑其是恶意的)。其次,我们需要尽量隐藏测试过程中的测试或攻击来源。
为了研究一个恶意攻击者或者恶意软件的行为特征,我们有可能需要去访问一些攻击者控制的资源。比如一个很常见的场景是:用户在facebook或者一个社交媒体网站上会受到攻击者的诱骗而去访问一些url,我们还不太确定攻击者是如何成功的控制这些跳转,而这些资源里包含有很多附加链接和javascript。因为我们要对这样的一个场景进行渗透测试,我们必须伪装成一个普通用户去访问这些资源,同时又不能被攻击者识破。
直接通过我们的真实IP去访问这些恶意网站是很不明智的,因为这无疑相当于直接告诉攻击者,我们在研究你的网站。此外,如果我们发出的请求看起来很像是一个小白用户发起的,这无疑告诉攻击者鱼儿上钩了。这也会使得攻击者来访问我们的系统,所以说隐藏我们的源IP是非常重要的。
有些时候,恶意软件只会在接收到特意的指令才会运行。我们可以尝试各种各样的指令来触发它,但是让它连接到真实网络这样触发无疑是最快的。但是,我们又不想被攻击者注意到恶意软件已经在我们的系统上运行了,避免攻击者会来入侵我们的系统。我们只需要这些行为信息和整个攻击过程。我们想还原攻击过程,但是,我们希望在拿到这些信息之后能够马上断开恶意软件的连接。
攻击者拥有各种各样的虚拟系统,他们不必担心自己的源IP暴露。对于一个渗透测试人员来说,一个虚拟的IP地址对于模拟一个真实的攻击者来说是非常重要的。以下的几个场景能说明这个道理:首先是网站踩点,一个熟练的攻击者不会使用相同的一个IP来扫描一个网站。其次是扫描服务类型,如果网站发现有人在不停的扫他,那么肯定会将这些扫描记录到日志里。试想来自四面八方的扫描,只扫那些常用服务是怎样的场景。攻击者会使用一些假IP来扫描目标,然后使用其他的IP来执行渗透。真正的坏蛋的目标只有一个,那就是敏感信息。你觉得一个聪明的家伙会把他的真实信息留下来莫?他会使用不同的系统来制造混乱。第四,是一些在未来今年对渗透测试人员来说很普遍的东西。渗透测试人员会越来越多的将精力花在移动设备上。
下面概述的方法可以有几个不同的方式来实现。我只会概述一种可以用的方法,你们可以根据自己的需要来自己调整。
这里还有一些有关政府部分比较介意的Tor在安装使用过程中的一些漏洞,(比如https://blog.torproject.org/blog/tor-security-advisory-old-tor-browser-bundles-vulnerable,https://www.mozilla.org/security/announce/2013/mfsa2013-53.html).当然,对于我们来说Tor已经能够满足我们了。如果你在找有关如何躲避联邦政府对Tor网络的监控的话,恐怕这篇文章不适合你。
0x01 细节
下面是基本步骤
1、安装和设置Privoxy 2、安装和设置Tor 3、配置Privoxy将代理指向Tor 4、通过Privoxy来上网
虽然以上步骤我是在linux上面演示的,但是其他系统上的设置基本上大同小异,比如windows,mac ox x。Privoxy 和 Tor组合可以让你很轻松的在Tor网络里作为一个匿名节点翱翔,这个节点跟IP地址的概念不太一样。如果有人想通过Tor网络来监控你的数据包的话,他们有可能是知道你在跟谁通信,但是这个不是我关注的重点,重点是没有人会知道我们是从哪里发起这个通信的。
1、安装和配置Privoxy
Privoxyd官网(http://www.privoxy.org/)是这样介绍这款软件的:Privoxy 是一个拥有高级过滤、修改网页数据和http header、访问控制和屏蔽广告等互联网垃圾功能的无缓存web代理工具。Privoxy 拥有灵活的配置并且可以高度定制化,以满足各位黑阔的需求。它在单人操作系统和多人操作系统下均有对应的版本。
它非常容易安装,不会的话去这里看看http://www.privoxy.org/user-manual/index.html,找到你自己的系统,然后按照步骤来就ok了。比如在Fedora 里只需这样:
yum -y install privoxy
当然你也可以使用其他的http代理工具,比如polipo 。
2、安装和配置Tor
Tor的官网(https://www.torproject.org/)是这样介绍她的:Tor最初是美国海军研究实验室设计用来作为第三代洋葱头路由的项目。她最初是美国海军为了保护政府的通信隐私而开发的。今天,全世界所有的普通人都可以用它来做各种各样的事情,比如军人,记者,政府人员,政治分子等等。
这里有Tor的工作背景:
https://www.torproject.org/about/overview.html.en#thesolution
如果它勾起你的好奇心,可以在这里下载安装:
https://www.torproject.org/docs/documentation.html.en
这里有Tor的警告和一些局限性:
https://www.torproject.org/download/download-easy.html.en#warning
对于那些已经熟悉Tor,但是可能因为某些大家都懂的原因,比如被墙了之类的,连接不上Tor的专有网络的人,可以看看这里看如何通过bridge 来连接到Tor网络:
https://www.torproject.org/docs/bridges.html.en
3、配置Privoxy 指向到Tor
我选择使用Privoxy 和 Tor组合最主要的原因就是DNS。如果我想控制本地的dns请求,以便我所有的dns请求都不泄露我的信息,我可以不停的换用一些公用dns服务器(比如8.8.8.8)。但是Privoxy还提供了一些附加功能用来阻断请求,而且它还会阻止那些有可能会暴露我们IP的请求。
这配置其实非常简单。在Linux里,只需要简单的配置下Privoxy让它链接到Tor,那么Privoxy就会将所有的DNS和HTTP请求转发到Tor网络里。
要让Tor帮你转发请求,只需在Privoxy里这样配置:
forward-socks5 / 127.0.0.1:9050
下面是privoxy 的完整配置文件(没有注释)。从里面可以很清楚的看到它并没有监听所有的端口,而是直接把请求转发给了Tor。
$ grep -v "^#" /etc/privoxy/config confdir /etc/privoxy logdir /var/log/privoxy actionsfile match-all.action # Actions that are applied to all sites and maybe overruled later on. actionsfile default.action # Main actions file actionsfile user.action # User customizations filterfile default.filter logfile logfile listen-address :8123 toggle 1 enable-remote-toggle 0 enable-remote-http-toggle 0 enable-edit-actions 0 enforce-blocks 0 buffer-limit 4096 forward-socks5 / 127.0.0.1:9050 . forwarded-connect-retries 0 accept-intercepted-requests 0 allow-cgi-request-crunching 0 split-large-forms 0 keep-alive-timeout 5 socket-timeout 300 handle-as-empty-doc-returns-ok
4、通过代理上网
a)配置环境变量(http_proxy, https_proxy, ftp_proxy)和命令行工具,以便通过代理上网。
举个例子,wget: wget是一个命令行的浏览器。它能跨域和递归地向指定地址发出请求,比如:
$ export http_proxy=127.0.0.1:8123 $ wget -nc -nd http://www.willhackforsushi.com/subscriptions.xml
在上面的例子中,我想查看Josh的rss feed列表,但是我又不想让他知道是我看的。我会大概每分钟左右发出一个请求
* * * * * wget -nc -nd http://www.willhackforsushi.com/subscriptions.xml
来监视这个页面,以防万一该页面会发生变化。
现在,wget对于我来说是一个很乖的web机器人。首先它会按照规定请求网站的robots.txt文件,并严格遵守该文件定义的内容。而且,wget也有nc选项,这个在我之前的例子中也用到了。这个选项的意思是”no-clobber“,或者说不要重复下载已经下载过的文件。事实上,它下载了但是并不保存。那么wget是怎么知道这个文件是不是已经下载了呢?毫无疑问,它会监控文件系统。所以
touch robots.txt; wget -nc -nd http://www.willhackforsushi.com/subscriptions.xml
将告诉wget不要保存 willhackforsushi.com这个网站的robots.txt文件,而是保存之前就保存过的一个空的robots.txt文件。
b)用-http-proxy选项来开启安卓虚拟机
通过一个安卓虚拟机安装一些app来进行渗透测试是一个不错的方法,当你在虚拟机里输入命令时,多半会用到 “-http-proxy ipaddr:port”。
确保你先运行了privoxy 。如果虚拟机不能访问privoxy 的本地端口,那么这些设置会失效。还会以图解的方式出现警告。
举个例子:
emulator -avd IceCreamSandwich -partition-size 256 -qemu -http-proxy 127.0.0.1:8123
现在,所有虚拟机里的数据包都会通过privoxy转发到Tor网络里。
不得忽视的一点是:在虚拟机启动前,必须先开启privoxy ,并确保本地端口监听是正常的。如果虚拟机在启动了之后不能连接到privoxy 的端口,那么它就会忽略这些代理选项,而且虚拟机还会直接使用本地网络来与外界通信,这无疑会暴露我们的源IP。
c)配置一个应用程序(或者设备)来使用代理
http_proxy环境变量对基于命令行的工具来说非常有用,因为大部分的命令行工具都会使用到它。但是,窗口工具不同于BASH的环境变量,他们有自己独立的代理设置。所以你可以通过配置好的应用来连接到代理。比如在chrome里可以这样:
打开chrome,输入"chrome://settings/" 选择高级选项 在网络选项里,点击“更改代理设置”按钮 配置http和https代理到127.0.0.1:8123
(所有主流浏览器的设置基本上大同小异)
d)通过 iptables 规则来分配数据包
如果你的应用程序不使用命令行代理环境变量,而且你也不能通过配置一个应用程序来连接代理,你还可以通过配置iptables 来使用NAT转换数据包到代理上。
下面是一个我经常用的bash脚本:
#!/bin/bash ## CHECK FOR ROOT wai=`whoami` if [[ "$wai" != "root" ]] then echo " You need to be uid 0. Re-run as: sudo $0 " exit fi ## SET SYSTEM TO PREROUTING IP PACKETS echo "1" > /proc/sys/net/ipv4/ip_forward ## HTTP TRAFFIC iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8123 ## HTTPS TRAFFIC iptables -t nat -A PREROUTING -p tcp --destination-port 443 -j REDIRECT --to-port 8123 ## CHECK FOR BURP pgrep -fl privoxy 2>&1 > /dev/null || echo "Are you sure privoxy is running?nOr maybe you intend to use something else I didn't check for."
我认为我已经设置好了后,我测试了下看它咋样。先来wget谷歌一下,
wget http://www.google.com
然后我用tcpdump抓包看了下
tcpdump -Xnnv -i eth0 port 80 or port 443 or port 53
因为如果我的代理工作正常的话,我在本地用tcpdump应该是抓不到任何数据包的。
注意我的请求被重定向到了google.fr,因为我是在Tor的匿名节点当中。
现在,你们可以尽情的干坏事了!各位大黑阔们!确保你们的访问都得到了授权哈。。。比如你可以看看那些高大上的软件是如何和自己家庭网络互通的。
现在,你已经具备了一定的匿名性了(前提是你们要有一定的授权哈),你可以用爬虫爬爬目标网站,下一些恶意软件来研究一下,或者跑一些你正在测试的app,与此同时,你不必担心你的源位置会被暴露。
from:http://pen-testing.sans.org/blog/pen-testing/2014/03/16/tor-nonymous-using-tor-for-pen-testing
原创文章,作者:Drops,如若转载,请注明出处:http://www.mottoin.com/tech/130410.html
相关推荐
- F5负载均衡器如何通过irules实现应用的灵活转发?
-
F5是非常强大的商业负载均衡器。除了处理性能强劲,以及高稳定性之外,F5还可以通过irules编写强大灵活的转发规则,实现web业务的灵活应用。irules是基于TCL语法的,每个iRules必须包含...
- 映射域名到NAS
-
前面介绍已经将域名映射到家庭路由器上,现在只需要在路由器上设置一下端口转发即可。假设NAS在内网的IP是192.168.1.100,NAS管理端口2000.你的域名是www.xxx.com,配置外部端...
- 转发(Forward)和重定向(Redirect)的区别
-
转发是服务器行为,重定向是客户端行为。转发(Forward)通过RequestDispatcher对象的forward(HttpServletRequestrequest,HttpServletRe...
- SpringBoot应用中使用拦截器实现路由转发
-
1、背景项目中有一个SpringBoot开发的微服务,经过业务多年的演进,代码已经累积到令人恐怖的规模,亟需重构,将之拆解成多个微服务。该微服务的接口庞大,调用关系非常复杂,且实施重构的人员大部分不是...
- 公司想搭建个网站,网站如何进行域名解析?
-
域名解析是将域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转...
- 域名和IP地址什么关系?如何通过域名解析IP?
-
一般情况下,访客通过域名和IP地址都能访问到网站,那么两者之间有什么关系吗?本文中科三方针对域名和IP地址的关系和区别,以及如何实现域名与IP的绑定做下介绍。域名与IP地址之间的关系IP地址是计算机的...
- 分享网站域名301重定向的知识
-
网站域名做301重定向操作时,一般需要由专业的技术来协助完成,如果用户自己在维护,可以按照相应的说明进行操作。好了,下面说说重点,域名301重定向的操作步骤。首先,根据HTTP协议,在客户端向服务器发...
- NAS外网到底安全吗?一文看懂HTTP/HTTPS和SSL证书
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:可爱的小cherry搭好了NAS,但是不懂做好网络加密,那么隐私泄露也会随时发生!大家好,这里是Cherry,喜爱折腾、玩数码,热衷于分享数...
- ForwardEmail免费、开源、加密的邮件转发服务
-
ForwardEmail是一款免费、加密和开源的邮件转发服务,设置简单只需4步即可正常使用,通过测试来看也要比ImprovMX好得多,转发近乎秒到且未进入垃圾箱(仅以Mailbox.org发送、Out...
- 使用CloudFlare进行域名重定向
-
当网站变更域名的时候,经常会使用域名重定向的方式,将老域名指向到新域名,这通常叫做:URL转发(URLFORWARDING),善于使用URL转发,对SEO来说非常有用,因为用这种方式能明确告知搜索引...
- 要将端口5002和5003通过Nginx代理到一个域名上的操作笔记
-
要将端口5002和5003通过Nginx代理到域名www.4rvi.cn的不同路径下,请按照以下步骤配置Nginx:步骤说明创建或编辑Nginx配置文件通常配置文件位于/etc/nginx/sites...
- SEO浅谈:网站域名重定向的三种方式
-
在大多数情况下,我们输入网站访问网站的时候,很难发现www.***.com和***.com的区别,因为一般的网站主,都会把这两个域名指向到同一网站。但是对于网站运营和优化来说,www.***.com和...
- 花生壳出现诊断域名与转发服务器ip不一致的解决办法
-
出现诊断域名与转发服务器ip不一致您可以:1、更改客户端所处主机的drs为223.5.5.5备用dns为119.29.29.29;2、在windows上进入命令提示符输入ipconfig/flush...
- 涨知识了!带你认识什么是域名
-
1、什么是域名从技术角度来看,域名是在Internet上解决IP地址对应的一种方法。一个完整的域名由两个或两个以上部分组成,各部分之间用英文的句号“.”来分隔。如“abc.com”。其中“com”称...
- 域名被跳转到其他网站是怎么回事
-
当你输入域名时被跳转到另一个网站,这可能是由几种原因造成的:一、域名可能配置了域名转发服务。无论何时有人访问域名,比如.com、.top等,都会自动重定向到另一个指定的URL,这通常是在域名注册商设...
你 发表评论:
欢迎- 一周热门
-
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
[常用工具] OpenCV_contrib库在windows下编译使用指南
-
WindowsServer2022|配置NTP服务器的命令
-
Ubuntu系统Daphne + Nginx + supervisor部署Django项目
-
WIN11 安装配置 linux 子系统 Ubuntu 图形界面 桌面系统
-
解决Linux终端中“-bash: nano: command not found”问题
-
NBA 2K25虚拟内存不足/爆内存/内存占用100% 一文速解
-
Linux 中的文件描述符是什么?(linux 打开文件表 文件描述符)
-
K3s禁用Service Load Balancer,解决获取浏览器IP不正确问题
-
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)