Tor隱身大法 —— 用Tor來幫助我們進行滲透測試
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 裡只需這樣:
#!bash
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。
#!bash
$ 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是怎麼知道這個檔案是不是已經下載了呢?毫無疑問,它會監控檔案系統。所以
#!bash
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 的本地埠,那麼這些設定會失效。還會以圖解的方式出現警告。
舉個例子:
#!bash
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指令碼:
#!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谷歌一下,
#!bash
wget http://www.google.com
然後我用tcpdump抓包看了下
#!bash
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
相關文章
- 什麼是Tor?Tor瀏覽器更新有什麼用?2022-07-27瀏覽器
- 什麼是滲透測試?網站有必要進行滲透測試嗎?2023-09-19網站
- 使用Tor繞過防火牆進行遠端匿名訪問2020-08-19防火牆
- Tor Browser 8.0 釋出2018-09-07
- 如何進行滲透測試XSS跨站攻擊檢測2019-10-08
- Tor Project對俄羅斯封禁Tor網站及節點提起上訴2022-01-25Project網站
- 滲透測試會用到哪些工具?滲透測試教程2021-08-05
- 超實用!手把手教你如何3步進行Web滲透測試!2018-11-23Web
- 英國草根 ISP 測試讓所有移動資料通過 Tor2018-10-24
- web應用安全隱患:3種常見的滲透測試漏洞總結,快來收藏√2021-12-10Web
- 滲透測試:看“道德黑客”如何進行模擬攻擊2021-12-22黑客
- Linux滲透測試2018-05-31Linux
- 什麼是滲透測試?為什麼要做滲透測試?2021-08-10
- 什麼是滲透測試?滲透測試分類方式有哪些?2023-10-17
- 什麼是滲透測試?滲透測試分為哪幾類?2021-08-11
- 滲透測試怎麼做?滲透測試的步驟有哪些?2022-04-08
- 你真的瞭解“滲透測試”嗎?滲透測試有何作用?2022-03-18
- 滲透測試的目的是什麼?滲透測試可以給企業帶來什麼好處?2022-02-14
- 滲透測試報告2024-03-22測試報告
- 滲透測試之nmap2020-10-25
- 【滲透測試】Vulnhub DarkHole2024-08-19
- 滲透測試 網站安全測試行業問題分析2020-03-09網站行業
- 滲透測試什麼?滲透測試具體操作流程是什麼2022-03-31
- 網路安全滲透測試的型別!滲透測試入門教程2021-08-02型別
- 什麼是滲透測試?滲透測試培訓班如何選擇?2022-11-08
- 什麼是滲透測試?滲透測試的服務方式有哪些?2023-03-29
- metasploit滲透測試筆記(內網滲透篇)2020-08-19筆記內網
- 洋蔥瀏覽器Tor Browser for Mac2020-10-21瀏覽器Mac
- Firefox 和 Tor 瀏覽器正進行整合,最終實現二合一2018-06-03Firefox瀏覽器
- 滲透測試是什麼?滲透測試三種分類主要包括哪些?2022-03-09
- 滲透測試用的瀏覽器外掛2024-10-12瀏覽器
- 滲透測試學習之隱藏蹤跡與規避檢測一2022-06-11
- 滲透測試學習之隱藏蹤跡與規避檢測三2022-08-01
- 滲透測試學習之隱藏蹤跡與規避檢測四2022-08-01
- 滲透測試學習之隱藏蹤跡與規避檢測五2022-08-01
- 滲透測試學習之隱藏蹤跡與規避檢測六2022-08-01
- 滲透測試學習之隱藏蹤跡與規避檢測七2022-08-01
- 滲透測試學習之隱藏蹤跡與規避檢測八2022-08-19