摘要:隨後進一步的配置需要同樣處於VMnet3模式的一臺主機訪問 http://172.168.2.3:8080 才能進行,所以我們先安裝第一層內網中的一臺win7(也就是IP地址爲172.168.2.200的那臺win7),安裝完畢後,將在虛擬機設置中將這臺win7其網卡模式配置爲VMnet3,進入系統,設置ip爲172.168.2.200,掩碼255.255.255.0,默認網關172.168.2.3(router2的lan1的地址),設置完成後,通過瀏覽器訪問 http://172.168.2.3:8080 ,默認用戶名admin密碼admin登錄路由web界面,配置router2的外網地址如下圖:。安裝完畢server2008後設置其網卡模式爲VMnet3,ip地址設爲172.168.2.2,掩碼255.255.255.0,默認網關172.168.2.3(即router2的lan1地址),然後在其上安裝phpstudy,並架設一個存在漏洞的cms,作爲外網突破點,爲了讓外網能夠訪問這臺server2008上的web服務,必須在router2上做一端口映射,具體操作如下,利用ip地址爲172.168.2.200的win7登錄router2的web管理界面 http://172.168.2.3:8080 ,做一個端口映射:。

*本文原創作者:Zzzxbug,本文屬於FreeBuf原創獎勵計劃,未經許可禁止轉載

前言

在網絡安全領域,內網滲透技術相較於外網攻擊技術,往往不易掌握,因爲內網數據一般較爲敏感,安全從業者不易取得滲透測試授權,從而難以積累經驗,本文將闡述如何使用VMware搭建較一個較複雜的企業內網環境,便於安全從業者練習內網滲透或者ctf組織方搭建內網滲透環境。

0×01 網絡拓撲

完整的網絡拓撲圖如下:

圖中黃色部分的網絡完全由VMware虛擬機實現,環境搭建需要一臺最低配置爲32G內存8核CPU、120G空餘磁盤空間的主機,搭建完畢後,滲透練習者只需按圖左側部分準備一臺windows實體機,安裝滲透測試軟件及kali虛擬機,然後與已經搭建好滲透測試平臺的主機進行連接,即可進行環境配置及練習。

架設過程中用到的系統鏡像下載地址如下:

虛擬路由 : https://www.ikuai8.com/component/download

kali : https://cdimage.kali.org/kali-2019.2/kali-linux-2019.2-amd64.iso

windows_server_2008: ed2k://|file|cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1_x64_dvd_617598.iso|3368839168|D282F613A80C2F45FF23B79212A3CF67|/

CentOS7: http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso

windows7: ed2k://|file|cn_windows_7_enterprise_with_sp1_x64_dvd_u_677685.iso|3265574912|E9DB2607EA3B3540F3FE2E388F8C53C4|/

windows10: ed2k://|file|cn_windows_10_business_editions_version_1903_x64_dvd_e001dd2c.iso|4815527936|47D4C57E638DF8BF74C59261E2CE702D|/

sqlserver2008 R2:ed2k://|file|cn_sql_server_2008_r2_enterprise_x86_x64_ia64_dvd_522233.iso|4662884352|1DB025218B01B48C6B76D6D88630F541|/

0×02架設過程

首先架設公網部分,即下圖中藍色部分:

公網部分包含攻擊者的公網出口路由、企業的公網出口路由、攻擊者使用的公網windows(win7)和linux(kali)。下面爲具體架設過程:

1. 在虛擬機的虛擬網絡編輯器中添加4個虛擬網段(VMnet2、VMnet3、VMnet4、VMnet5):

注意將4個網段均設置爲“僅主機模式”,且都要取消“將主機虛擬器適配器連接到此網絡”以及“使用本地DHCP服務將IP地址分配給虛擬機”選項,4個網段ip設置及作用如下:

VMnet2   111.111.0.0 mask 255.255.0.0 作用:模擬公網網段
VMnet3   172.168.2.0 mask 255.255.255.0 作用:模擬第一層內網網段
VMnet4   10.10.10.0  mask 255.255.255.0 作用:模擬第二層內網網段
VMnet5   192.168.222.0 mask 255.255.255.0 作用:模擬第三層內網網段

2.架設本地出口路由(攻擊者的出口路由)

環境中的虛擬路由用的都是愛快路的鏡像,安裝完畢後的界面如下(系統版本號可能與下載的不太一樣,我用的是兩年前下載的鏡像,不過操作應該是一樣的):

安裝完畢後,將其初始網卡設爲橋接模式,然後再爲其添加一張網卡,設爲VMnet2模式,同時將兩張網卡的mac地址記錄下來,因爲後面要在虛擬路由設置界面中設置哪張網卡是wan,哪張是lan:

然後選擇虛擬路由菜單選項8重啓(如果不重啓可能導致讀取mac地址不正常)。

重啓過後,選擇菜單1設置網卡綁定,這裏需要根據剛纔記錄下來的mac地址來判斷哪張是橋接模式的網卡,哪張是VMnet2的網卡,將那張橋接模式的網卡設置爲lan1,VMnet2那張網卡設置爲wan1,lan1就是與第一層內網相連的網卡,wan1就是與公網網段相連的網卡,如判斷eth0爲橋接模式的網卡,則用“set lan1 eth0”來將其設爲lan1,然後“set wan1 eth1”將eth1設爲虛擬路由的wan口:

然後選擇軟路由菜單2設置lan地址,依據網絡拓撲圖,我這裏設置路由器1的出口地址爲192.168.1.120: 

然後選擇虛擬路由菜單3設置web端口,我這裏設置爲8080,隨後就可以通過本地實體機訪問 http://192.168.1.120:8080 來繼續配置路由器(注意本地實體機要訪問虛擬公網,有兩種方法:1是設置默認網關爲192.168.1.120;2是執行route add 111.111.0.0 mask 255.255.0.0 192.168.1.120添加一條路由):

默認用戶名、密碼均爲admin,登錄後,進入外網設置菜單,

設置參數如下圖,將router1的wan口地址設置爲111.111.111.1:

這樣,本地出口路由就設置完畢!

3.架設攻擊者的公網vps

安裝公網win7及kali都很簡單,安裝完win7後,設置其網卡模式爲VMnet2,進入系統後,設置其ip地址爲111.111.111.2,設置密碼,併爲其開啓遠程桌面;安裝完kali後,設置其網卡模式爲VMnet2,進入系統,設置其ip地址爲111.111.111.4,然後/etc/init.d/networking restart重啓網絡服務,但由於kali默認沒有開啓ssh遠程登錄,需要按下列步驟爲其配置ssh遠程連接:

(1)修改/etc/ssh/sshd_config文件,將#PasswordAuthentication no的註釋去掉,並將NO修改爲YES,將PermitRootLogin without-password修改爲PermitRootLogin yes

(2)重啓ssh服務:/etc/init.d/ssh restart

(3)設置系統自啓動ssh服務:update-rc.d ssh enable

配置完畢後,在本地攻擊機遠程桌面公網win7,成功則配置正常,在本地用ssh軟件(推薦xshell)遠程連接公網kali,成功則配置正常。

4.架設軟路由router2(企業的出口路由)

配置router2的過程大致與router1相同,注意將其初始的網卡模式設爲VMnet2,然後爲其添加一塊網卡模式爲VMnet3,同樣記下兩張網卡的mac地址,用於稍後的網卡綁定,在網卡綁定中,設置VMnet3模式的網卡爲LAN1,設置VMnet2模式的網卡爲WAN1,然後配置LAN1的地址爲172.168.2.3,web管理端口爲8080:

隨後進一步的配置需要同樣處於VMnet3模式的一臺主機訪問 http://172.168.2.3:8080 才能進行,所以我們先安裝第一層內網中的一臺win7(也就是IP地址爲172.168.2.200的那臺win7),安裝完畢後,將在虛擬機設置中將這臺win7其網卡模式配置爲VMnet3,進入系統,設置ip爲172.168.2.200,掩碼255.255.255.0,默認網關172.168.2.3(router2的lan1的地址),設置完成後,通過瀏覽器訪問 http://172.168.2.3:8080 ,默認用戶名admin密碼admin登錄路由web界面,配置router2的外網地址如下圖:

配置完畢後,從本地攻擊主機ping 111.111.111.3這個地址(即router2的wan1地址),如果正常,則說明配置成功。

至此,模擬環境的公網部分配置完畢了,接下來配置第一層內網,也就是下圖中黃色部分:

該層內網中有1臺server2008(172.168.2.2)服務器,充當企業對外的門戶網站,一臺win7作爲管理員主機,1臺雙網卡的centos7(172.168.2.120&&10.10.10.110),代替路由作爲第一層與第二層的橋樑。Win7剛剛已經配置過,下面配置server2008與centos7,

安裝完畢server2008後設置其網卡模式爲VMnet3,ip地址設爲172.168.2.2,掩碼255.255.255.0,默認網關172.168.2.3(即router2的lan1地址),然後在其上安裝phpstudy,並架設一個存在漏洞的cms,作爲外網突破點,爲了讓外網能夠訪問這臺server2008上的web服務,必須在router2上做一端口映射,具體操作如下,利用ip地址爲172.168.2.200的win7登錄router2的web管理界面 http://172.168.2.3:8080 ,做一個端口映射:

讓server2008的網站能夠暴露在公網上,端口映射配置參數如下:

配置完成後,從本地攻擊機訪問 http://111.111.111.3, 可以看到,我們已經可以訪問到內網中server2008上的網站了。

然後在172.168.2.200這臺win7上啓動一個機器人腳本,其內容如下:

While True

set obj = createobject("wscript.shell")

obj.run "cmd /c iexplore http://172.168.2.2/pdf1.html "

WScript.Sleep(1000*30)

obj.run "taskkill /IM iexplore.exe"

WScript.Sleep(1000*30)

Wend

這個腳本的作用是每隔一段時間訪問server2008網站上的指定頁面,因爲等我們拿下server2008後需要對win7做釣魚,所以做個機器人比較方便。

然後安裝centos7,爲了減小系統開銷,我用的是最小化安裝,安裝完畢後將其初始網卡模式配置爲VMnet3,其爲再添加一塊網卡,模式配置爲VMnet4,centos7配置雙網卡工作的坑稍多,說一下步驟:

進入系統,首先輸入命令“ip addr”,查看兩張網卡名稱,這裏分別爲ens33與ens37:

根據MAC地址,判斷哪張網卡需要連接第一層內網,另一張則連接第二層內網,例如確定ens33這張網卡連接第一層內網,則

“cd /etc/sysconfig/network-scripts/”進入網絡配置文件目錄,ls查看,

這裏的ifcfg-ens33這個配置文件對應ens33這張網卡的配置,我們要配置ens33的網絡參數,就要編輯這個文件,vi ifcfg-ens33,編輯文件內容如下:

然後退出vi,下面要編輯ens37這張網卡,先cp ifcfg-ens33 ifcfg-ens37,複製一份配置文件,然後vi ifcfg-ens37,編輯文件內容如下圖:

注意:裏面的UUID可能需要用uuidgen命令生成。

配置好ens37,使用命令“nmcli con up ens37”,啓動ens37,如果沒有報錯,則“service network restart”重啓網絡服務,然後用該層內網中win7 ping 172.168.2.120,如果回顯正常則說明配置成功。

然後爲win7安裝ssh軟件,登錄centos7,將其密碼改爲win7相同的密碼(因爲我們要實現一個同密碼攻擊).

至此,第一層內網配置完畢。

下面配置第二層內網,即下圖中黃色部分:

這一層內網模擬企業辦公網,所有主機均在域中,首先安裝域控主機,即ip爲10.10.10.56的server2008主機。

安裝完畢server2008系統後,將其網卡模式配置爲VMnet4,ip地址設爲10.10.10.56,掩碼設置爲255.255.255.0,默認網關設爲10.10.10.254,DNS設爲127.0.0.1(因爲域中一定需要一臺DNS服務器,我們稍後會將DNS服務也安裝到這臺域控上,所以這裏可以設置爲127.0.0.1),然後用服務器管理器“添加角色”,添加Active Directory域服務(域名稱爲domainTest1.com)以及DNS服務器(DNS服務器也可以安裝在其他server級別的主機上,不過如果將兩者分開安裝,需要先安裝DNS服務,並在DNS服務的正向查找區域中添加要安裝Active Directory域服務的域解析記錄,並在安裝Active Directory域服務之前正確設置域控主機的dns服務器地址,比較麻煩,所以這裏採用域控與DNS服務合併的辦法),安裝完畢後,需要在DNS的正向查找區域中添加一條主要區域(即域的解析記錄):

區域名稱填:

添加完成後,域就可以正常工作。如果對這一部分不太清楚,可以讀一讀《windows server2008R2 Active Directory配置指南》的1-3章相關內容。

域控安裝完畢後,我們繼續安裝該層內網中的其他主機:ip地址爲10.10.10.3的win7與10.10.10.88的server2008,安裝完畢後將它們的網卡模式均配置爲VMnet4,ip地址依照拓撲圖上設置,掩碼255.255.255.0,網關10.10.10.254,注意DNS都要設置爲域控的ip地址即10.10.10.56,設置完畢後,登錄兩臺主機將它們加入域,以win7爲例,加入域的方法爲:

右擊計算機–>計算機名稱、域與工作組設置–>更改設置–>計算機名選項頁–>更改,將“隸屬於”單選框切換到“域”選項:

輸入域的名稱domainTest1.com,點確定,彈出對話框:

這裏輸入域管理員的賬戶及密碼,確定後,彈出如下對話框:

表明這臺win7成功加入了域domainTest1.com域,重啓win7,以域內賬號登陸即可。

Server2008加入域的步驟與win7類似,不再贅述,待server2008加入域後,以域管理員賬戶登陸,安裝phpstudy,在8080端口上架設一個企業內部的OA系統:

然後在這臺server2008上利用服務器管理器添加角色,安裝iis,使其在80端口上能夠被第二層內網正常訪問,爲其添加一個asp頁面。該頁面通過第三個虛擬路由router3連接到第三層內網的sqlserver2008。至此,第二層內網環境架設完畢。

接下來架設第三層內網,第三層內網模擬企業的核心數據網,與第二層之間使用路由器進行隔離,下圖中黃色部分爲第三層內網部分:

首先架設虛擬路由,依然先安裝愛快路虛擬路由,安裝完畢後,虛擬機設置中將其初始網卡模式設爲VMnet4(與LAN2相連),然後再爲其添加一張網卡,模式設爲VMnet5(與LAN3相連),記錄下兩張網卡的MAC地址,然後進入虛擬路由設置界面,設置網卡綁定爲:VMnet4模式的網卡爲lan1,VMnet5模式的網卡爲lan2:

在設置lan地址中設置lan1地址爲10.10.10.200,設置web端口爲8080,然後用第二層內網中的win7訪問 http://10.10.10.200:8080, 設置lan2的地址爲192.168.222.22

第二層內網的server2008(10.10.10.88)需要訪問第三層sqlserver2008數據庫(192.168.222.200:1433),而第三層的win10(192.168.222.77)需要訪問第二層的server2008上的web服務(10.10.10.88:80),所以需要分別在虛擬路由的lan1與lan2的高級設置中設置“允許其他LAN訪問此LAN”:

但如果只是打開LAN互訪控制,則第二層內網與第三層內網就會無限制相互訪問,降低了安全性,所以添加6條ACL規則:

添加並啓用後,可以保證第二層內網內只有ip爲10.10.10.88的主機能夠訪問第三層內網的192.168.222.200的1433端口,在第三層內網中只有192.168.222.77的主機能夠訪問第二層內網的10.10.10.88的80端口。

第三個虛擬路由安裝完畢後,接下來安裝第三層內網中的server2008與win10,安裝完系統後,分別依照拓撲圖設置ip,掩碼255.255.255.0,默認網關192.168.222.22。然後在server2008上安裝sqlserver2008,並創建名爲“test”數據庫,執行test.sql數據庫腳本,導入test.data的數據,並配置sqlserver2008可以爲外網訪問,這裏配置稍微繁瑣,簡答介紹一下:

打開SQLserver配置管理器,如下圖設置SQLServer網絡配置:

然後雙擊TCP/IP協議,切換到IP地址選項卡,將所有的IP地址下的“活動”、“已啓用”均切換爲是,也就是讓SQLserver在所有IP地址上監聽:

最後,在這臺主機的“高級安全windows防火牆”配置中添加一條規則,設置通過1433端口:

最後安裝ip地址爲192.168.222.77的win10,安裝完畢後,配置網卡模式爲VMnet5,ip地址爲192.168.222.77,掩碼255.255.255.0,網關192.168.222.22,然後用瀏覽器訪問 http://10.10.10.88/index.asp?id=1, 出現如下界面,說明第三層內網配置成功。

最後在win10上啓動一個vbs腳本機器人,讓其自動訪問 http://10.10.10.88 上的頁面,因爲我們那些第二層內網後要對第三層內的win10做釣魚攻擊。

至此這個三層內網的滲透靶場架設完畢,至此本文的篇幅已經夠長了,所以這個靶場的writeup就不仔細寫了,下面簡單介紹一下攻擊思路。

0×03 攻擊思路

1. 外網突破

掃描111.111.111.0/24段,發現111.111.111.3:80開放,登錄發現網站,awvs掃描發現網站存在SQL注入漏洞,於是注入獲取用戶名及密碼,登錄成功後獲取網站物理路徑,在網站後臺中試圖上傳webshell不成功,通過御劍掃描網站,發現phpmyadmin,用弱口令登錄phpmyadmin,試圖用mysql寫webshell,發現mysql開啓了secure-file-priv開關限制了寫文件目錄,使用mysql開啓日誌文件,將日誌文件的位置設置爲剛纔在後臺中發現的網站物理路徑位置,在sql查詢語句中寫webshell,成功拿到webshell。

2. 第一層內網滲透

利用webshell上傳反向socks5代理軟件frpc等,在公網windows上運行frps,使得這臺webshell主機的代理客戶端與公網windows主機上的代理服務端相連接,這樣在本地windows攻擊機上安裝Proxifier、SocksCap64等軟件(kali用proxychains),就可以將攻擊流量發送至第一層內網。

通過在本地掃描webshell網段,可以發現172.168.2.200(linux)、172.168.2.120(windows)兩臺主機,在webshell主機的apache日誌中可以發現172.168.2.120這臺主機在不斷訪問 http://172.168.2.2/pdf1.html 這個頁面(robot.vbs的作用),於是用CVE-2018-8174對172.168.2.120進行釣魚(用法詳見壓縮包),釣魚成功後,獲取172.168.2.120的msf反彈回話,上傳getpass進行密碼抓取,然後利用msf的遠程桌面開啓腳本轉出3389到公網kali,遠程桌面登錄後發現管理員桌面上有ssh軟件,聯想到該層內網還有一臺linux主機,所以猜測這臺主機的密碼與linux相同,於是嘗試用相同密碼登錄,登錄成功,於是拿下linux,第一層內網滲透完畢!

3. 第二層內網滲透

在linux上搜集信息發現雙網卡,在10.10.10.0/24網段上進行掃描發現3臺主機存活,並且10.10.10.88這臺主機上開放了80、8080端口,訪問 http://10.10.10.88:8080 發現phpoa系統,利用任意文件上傳POC拿到webshell,然後判斷環境爲域環境,並且當前登錄賬戶爲域管理員賬戶,於是上傳getpass拿到域控密碼,利用ipc入侵,拿下域內其他兩臺主機,第二層內網滲透完畢!

4. 第三層內網滲透

在10.10.10.88上發現還打開了80端口,上面運行着iis服務,並且連接着192.168.222.200上的sqlserver數據庫,於是利用sqlserver存儲過程執行命令,不過由於router3的acl規則很嚴格,所以無法進行回話反彈。另外審查10.10.10.88的iis日誌,發現192.168.222.77的ie瀏覽器對其有規律性的訪問記錄,所以可以利用CVE-2018-15982對其進行釣魚,不過需要注意的一點是192.168.222.77是一臺win10,自帶殺毒軟件,所以需要對可執行payload進行免殺處理。

架設過程中用到的素材我已上傳到網盤:鏈接: https://pan.baidu.com/s/1NIOIZgVDLgkg7j6Ch5pjwA 提取碼:kws9 ,如果在架設過程中遇到問題,歡迎私信聯繫我。

*本文原創作者:Zzzxbug,本文屬於FreeBuf原創獎勵計劃,未經許可禁止轉載

相關文章