當前位置:
首頁 > 新聞 > 使用Linux容器迅速搭建滲透測試環境

使用Linux容器迅速搭建滲透測試環境

作為一名滲透測試人員,我經常需要搭建一些小型實驗環境(有時候不是那麼小),當然,這樣做的原因是多方面的,例如在對客戶的生產系統進行測試之前先做一下試驗,或為了避免被檢測到,或者只是為了練手。為此,我們可以用物理設備搭建一個測試環境。但是,如果公司員工很多是遠程工作的話,那麼,用起來也很不方便。當然,我們也可以通過VMware在自己的筆記本電腦上輕鬆安裝一個完整的虛擬機(VM),但是這樣還是可能遇到許多問題,例如耗盡系統的磁碟或內存空間,或者因為存儲空間不足,無法保留將來需要再次使用的東西。當然,我們可以連接一些容量較大的外接驅動器,但它們又很難隨身攜帶。

隨著技術的飛速發展,進入輕量級容器和高效的寫入時拷貝文件系統(如Btrfs )的時代!有了這些,我們就可以用最低的磁碟成本搭建任意數量的虛擬Linux機器,並且不必擔心運行完整虛擬機所帶來的內存開銷。現在,我們有了更加大的選擇餘地,下面,我們將為讀者介紹一些基礎技術。像Docker這樣的工具非常適合需要重複或可分發的東西,但是,我更喜歡直接使用Linux Containers(LXC)和kvm(qemu-kvm)進行日常測試。如今,我們可以在可引導當代Linux內核的硬體(幾乎所有硬體都能滿足這一要求)上搭建一個簡單的環境。您甚至可以從運行在VMware中的虛擬機開始這些工作!

在構建特定滲透測試環境方面,本文介紹的方法還不夠完善,但是,我可以為讀者指出一些正確的方向——這些都是通過我自己的實踐驗證過的,因此,剩下的事情,就靠讀者根據自身的情況填補空白或做出相應的修改了。希望本文可以幫助各位節約一些寶貴的時間。此外,我將專註於LXC,但本文的目標是創建一個可以集成其他的環境容器類型,如Docker或在同一宿主機上以kvm運行的完整VM。

配置宿主機

首先,我們需要一個宿主機平台。就個人而言,我會選擇Slackware!與許多其他平台不同,它沒有很多製造麻煩的東西,例如對新發現的網路介面進行處理的systemd/udev規則等。也就是說,為了減少麻煩,最好使用自己最熟悉的Linux平台。請記住,這只是宿主機平台——我們仍然可以運行CentOS或任何其他客戶機Linux操作系統。

這裡不會對宿主機平台的設置進行詳細介紹,相反,我們只是給出幾個主要要點:

(1)如果使用虛擬機作為「宿主機」平台,並計劃支持所有非Linux系統客戶機的話,請啟用嵌套虛擬化。

·對於kvm,可以通過向/etc/modprobe.d/添加conf文件來完成此操作。

它應該包含選項kvm_amd nested = 1或options kvm_intel nested = 1

·對於VMware,vmx文件應該含有enable =「TRUE」

(2)如果您希望VM與外界通信,請考慮使用第二個物理網路介面控制器(NIC)。這樣,即使進行網路更改,也不會中斷與宿主機的SSH連接。還有很多其他選項,例如在宿主機上使用iptables進行網路地址轉換(NAT),或者將物理主適配器放置在充當虛擬LAN網段的網橋中,然後將IP分配給該網橋,但這些選項可能會讓你的生活變得複雜

·設置宿主機系統,令該介面處於未配置狀態。它應該是「UP」,但不要啟用DHCP或設置網路地址。

(3)在主文件系統方面,您可以根據自己的喜好進行選擇。您可以使用一個大型卷,並把Btrfs文件系統掛載到/var/lib/lxc,或者,如果將Btrfs作為主文件系統,則容器可以共享相同的卷。

請確保宿主機內核支持Linux容器!為此,可以運行命令lxc-checkconfig。

圖1 經過正確配置的系統上的lxc-checkconfig

上面命令的輸出結果,應該與上面的內容相似。如果缺少任何功能,請啟用指定的內核選項並重新編譯內核!這不是必須的,因為這些功能已經在大多數常見配置中啟用了很長一段時間。

配置網路

接下來,我們開始配置網路。在折騰多種路由方法後,我發現最好的方法是使用虛擬乙太網介面或「veth」。之所以這麼說,肯定是有原因的。首先,使用它時,對於更高層的協議沒有特殊要求,因此,即使不是IP,也照樣能玩。第二個原因是,可以將其他乙太網設備無縫地添加到橋接器中;這些乙太網設備可以包括物理適配器和kvm虛擬介面,甚至包括使用tun/tap介面的OpenVPN。最後,因為它在容器內部顯示為普通的乙太網介面,所以,客戶無需更改即可正常工作。

在宿主機上,需要創建Linux網橋。如果您不熟悉橋接的概念,可以將其視為虛擬網路二層交換機。有的平台會提供rc腳本,我們可以在此定義和配置橋接介面。我將在設置拓撲時給出相關的基本命令。您可以將相關的設置遷移到平台的引導腳本中,也可以使用這些命令自行編寫一些shell腳本來創建配置介面。

對於需要的每個LAN網段,我們都會在宿主機上創建一個對應的網橋介面。

brctl addbr lab

該命令將創建一個名為「lab」的網橋介面。我建議使用像「lab」這樣的名稱,而不是「br0」之類的名稱,因為當您運行諸如ifconfig -a之類的命令時,能夠一眼看出將來會發生什麼。否則,隨著實驗室中虛擬網路和介面的數量變得越來越多,您的噩夢般的生活就要開始了。

如果您只有一個介面(假設為eth0),則可以創建第二個網橋作為外部世界的上行鏈路,然後將物理適配器添加到該介面即可。您需要將適配器配置為「UP」,同時不要為其分配地址。如果您有像Networkmanager這樣的守護進程,則需要確保這些守護程序不會修改該介面的屬性。

brctl addbr uplnkbrctl addif uplnk eth0dhclient uplnk

在宿主機上,該網橋將顯示為網路適配器,您可以把它看作是一個已經插入虛擬交換機埠的網路適配器。在這裡,dhclient uplnk將從物理LAN上的DHCP伺服器獲取IP地址。這裡獲得的IP地址可能會與以前不同的,因為該網橋的虛擬MAC地址與乙太網適配器不同。

從設計的角度來看,我喜歡將測試環境與網路的其他部分隔離開來。為此,我選用了容器,並將其設置為Linux路由器/網關。然後,我在實驗室網段和其他測試網段上為其提供了相應的介面,並將物理網卡傳入其中以訪問外部世界或者在「uplnk」中為其提供介面。這將是我們的第一個容器。

結束語

在本文中,我們為讀者介紹了如何配製宿主機和網路,在本文的下篇中,我們將為讀者介紹更多的精彩內容,敬請期待。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

Malwarebytes Labs對SamSam勒索軟體的分析
惡意宏劫持桌面快捷方式傳播後門

TAG:嘶吼RoarTalk |