如何構(gòu)建完美的Dropbox(上)
Dropbox是一款免費網(wǎng)絡(luò)文件同步工具,是Dropbox公司運行的在線存儲服務,通過云計算實現(xiàn)因特網(wǎng)上的文件同步,用戶可以存儲并共享文件和文件夾。Dropbox提供免費和收費服務,Dropbox的收費服務包括Dropbox Pro 和 Dropbox for Business。在不同操作系統(tǒng)下有客戶端軟件,并且有網(wǎng)頁客戶端。
即便如此完美的工具,也發(fā)生過網(wǎng)絡(luò)安全事故。早在2012 年,Dropbox 超過 6000 萬帳戶資料就被盜過一次。再比如在2016年,攻擊者利用Dropbox傳播了一種名為petya的勒索軟件,他們點擊存儲在Dropbox共享上,而用戶沒有意識到,只要點擊Dropbox后他們的計算機上就會安裝病毒。
我們一直在為FriendlyArm NanoPi R1S單板計算機(SBC)制作軟件映像,他們將用它來演示一些近距離攻擊技術(shù)。我將通過安裝Armbian發(fā)行版以及P4wnP1 ALOA詳細介紹配置R1S的過程。我們還將快速了解如何將USBProxy配置為一個鍵盤記錄器。
首先,我們將利用MaMe82的P4wnP1將R1S配置為USB攻擊的平臺,雖然最初是為Raspberry Pi Zero W創(chuàng)建的,但從本質(zhì)上講,沒有任何限制。Raspberry Pi Zero W,在中國,大家叫我樹莓派Zero W,在這里,我簡稱為RPi Zero W。
我作為樹莓派家族里的新生代寵兒,與前輩1代一樣用ARM11內(nèi)核的BCM2835處理器,但我的運行速度比之提升了約40%。
相比Raspberry Pi Zero,我增加了與3代B一樣的WiFi和藍牙,能適應更多場合。我們真正需要的是帶有USB設(shè)備控制器(UDC)的SBC,以及通過該設(shè)備控制器進行通信的某種方式!R1S完全符合上述描述,它具有2個千兆以太網(wǎng)端口,我們可以在設(shè)置時最初使用它們,但最終我們將專用于以太網(wǎng)攻擊,具體的過程我們稍后介紹。 R1S還具有內(nèi)置的WiFi,盡管它不是特別好的芯片組!但是,我們可以將其用作訪問點以允許遠程訪問設(shè)置的dropbox。我們還可以將USB主機端口用于LTE調(diào)制解調(diào)器或更長距離的其他網(wǎng)絡(luò)接口。但首先,我們將使用默認情況下Armbian在USB端口上提供的串行控制臺進行連接。
我們將以Armbian Buster當前版本(Armbian_20.02.1_Nanopi-r1_buster_current_5.4.20.7z)為基礎(chǔ)。下載文件,解壓縮.img文件,然后按照Armbian網(wǎng)站上的說明將其寫入microSD卡。通常,我會執(zhí)行以下操作,但要確保你使用的設(shè)備是正確的設(shè)置!
- mount | grep mmcblk0 | while read dev rest; do
 - sudo umount $dev
 - done && (pv Armbian_20.02.1_Nanopi-r1_buster_current_5.4.20.img | sudo dd of=/dev/mmcblk0 bs=2048)
 
完成后,將micro SD卡插入R1S,然后使用microUSB線將R1S連接到計算機。確保你選擇的線是數(shù)據(jù)線,而不僅僅是充電線!幾分鐘后,你應該在主機上看到一個串行端口(這發(fā)生在R1S啟動并擴展文件系統(tǒng)以填充SD卡之后)。如果看不到新的串行端口,請檢查數(shù)據(jù)線!
dmesg -w顯示R1S的枚舉
你應該能夠使用首選的終端仿真器連接到串行端口,我喜歡使用picocom,并且我相信Windows上的Putty也可以很好地工作。你不必擔心波特率,但115200應該可以。使用Linux主機,串行端口枚舉為ttyACM設(shè)備,例如/dev/ttyACM0。建立連接后,最初的Armbian登錄/設(shè)置屏幕會打招呼。以“root”用戶身份登錄,密碼為“1234”,然后重新輸入密碼“1234”以開始將其更改為新密碼。記住你的新root密碼!你可能不需要創(chuàng)建非特權(quán)用戶,但是如果你確實愿意,可以這樣做!
以root / 1234身份登錄,然后更改root密碼
在中斷或完成“新用戶帳戶”的創(chuàng)建過程后,注銷,然后作為根用戶或來自非特權(quán)用戶的sudo -s重新登錄。在引導過程中,我們將一條以太網(wǎng)線從本地網(wǎng)絡(luò)連接到R1S的WAN端口。幾秒鐘后,R1S應該分配了一個IP地址。
從本地DHCP服務器獲取IP地址
現(xiàn)在我們可以SSH到我們的R1S。我還復制了ssh公鑰,以使將來的連接更簡單。
在運行P4wnP1之前,我們需要禁用USB串行控制臺,以便P4wnP1可以管理USB設(shè)備控制器。首先,停止systemd在設(shè)備上啟動登錄提示:
- systemctl disable serial-getty@ttyGS0.service
 - systemctl stop serial-getty@ttyGS0.service
 
然后,通過阻止加載g_serial模塊,停止自動創(chuàng)建串行設(shè)備。這樣,我們將立即將其卸載,并防止日后再次加載:
- rm /etc/modules
 - rmmod g_serial
 
現(xiàn)在克隆P4wnP1 ALOA存儲庫,然后將必要的(預構(gòu)建的)零件復制到正確的位置。理想情況下,我們會從頭開始構(gòu)建,但是在構(gòu)建過程中目前存在一些錯誤。幸運的是,為Raspberry Pi Zero W構(gòu)建的二進制文件在NanoPi R1S上運行得很好!
- apt install -y dnsmasq
 - git clone https://github.com/RoganDawes/P4wnP1_aloa
 - cd P4wnP1_aloa
 - mkdir -p /usr/local/P4wnP1
 - cp build/P4wnP1_* /usr/local/bin/
 - cp -r dist/* /usr/local/P4wnP1/
 - cp build/webapp* /usr/local/P4wnP1/www
 - mv /usr/local/P4wnP1/P4wnP1.service /etc/systemd/system/
 - systemctl enable P4wnP1.service
 - systemctl start P4wnP1.service
 
現(xiàn)在P4wnP1正在運行,你應該可以在端口8000上以與SSH相同的IP訪問P4wnP1 Web界面,即http://nanopi-r1:8000。這里沒有身份驗證,因為假設(shè)P4wnP1公開的網(wǎng)絡(luò)是一個受信任的網(wǎng)絡(luò)。
現(xiàn)在是測試USB配置是否正常的好時機,你應該能夠使用右側(cè)的復選框選擇一個或多個USB類來實施。我通常喜歡實現(xiàn)鍵盤和鼠標以及自定義的HID設(shè)備。然后,確保左上角的USB已啟用,然后單擊“部署”。
配置P4wnP1 USB配置文件
你應該看到R1S連接到的計算機檢測到一個新的USB設(shè)備。例如,在主機上使用“dmesg”,你應該看到類似以下內(nèi)容:
- [2316641.797152] usb 1-5: new high-speed USB device number 40 using xhci_hcd
 - [2316641.809806] usb 1-5: New USB device found, idVendor=1d6b, idProduct=1347, bcdDevice= 1.00
 - [2316641.809808] usb 1-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
 - [2316641.809810] usb 1-5: Product: P4wnP1 by MaMe82
 - [2316641.809811] usb 1-5: Manufacturer: MaMe82
 - [2316641.809812] usb 1-5: SerialNumber: deadbeef1337
 - [2316641.815378] input: MaMe82 P4wnP1 by MaMe82 as /devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.0/0003:1D6B:1347.0028/input/input85
 - [2316641.867750] hid-generic 0003:1D6B:1347.0028: input,hidraw0: USB HID v1.01 Keyboard [MaMe82 P4wnP1 by MaMe82] on usb-0000:00:14.0-5/input0
 - [2316641.868575] input: MaMe82 P4wnP1 by MaMe82 Mouse as /devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.1/0003:1D6B:1347.0029/input/input86
 - [2316641.868921] hid-generic 0003:1D6B:1347.0029: input,hidraw1: USB HID v1.01 Mouse [MaMe82 P4wnP1 by MaMe82] on usb-0000:00:14.0-5/input1
 - [2316641.869892] hid-generic 0003:1D6B:1347.002A: hiddev96,hidraw2: USB HID v1.01 Device [MaMe82 P4wnP1 by MaMe82] on usb-0000:00:14.0-5/input2
 
如果要在啟動時部署此USB配置,則可以單擊Store,然后輸入“startup”作為配置文件名稱。另外,也可以根據(jù)需要在手動控制下進行部署。
此時,你應該擁有一個功能正常的P4wnP1設(shè)備,并且可以按照Internet上的各種教程來實際使用USB功能來攻擊連接的設(shè)備。
注意:我發(fā)現(xiàn)P4wnP1在配置(在P4wnP1內(nèi))連接到現(xiàn)有的接入點時非常不穩(wěn)定。如果這是你的需要,我寧愿建議使用NetworkManager進行這種配置。在這種情況下,我建議你忽略下一段,并禁用P4wnP1中的WiFi配置,并將其另存為啟動配置文件。
如果你確實想利用內(nèi)置Wi-Fi界面的熱點功能進行遠程訪問,則可能希望讓P4wnP1為你進行管理,只是因為使用NetworkManager進行配置似乎并不容易。如果是這樣,你將需要告訴NetworkManager忽略該接口,因此不會存在所有權(quán)沖突。你可以通過編輯/etc/NetworkManager/NetworkManager.conf并在底部添加以下兩行來完成此操作:
- [keyfile]
 - unmanaged-devices=interface-name:wlan0
 
現(xiàn)在,你可以使用Web界面中的“WiFi設(shè)置”標簽,將P4wnP1配置為將Wi-Fi界面作為接入點運行。將其存儲為“啟動”配置文件的一部分,以在啟動時自動對其進行配置。
當設(shè)備將在現(xiàn)場部署且沒有熟悉的Wi-Fi網(wǎng)絡(luò)可供連接時,這將很有用??梢哉f,隱藏SSID有助于將其隱藏起來。當然,一旦你開始與它關(guān)聯(lián),任何本地Wireless IDS都會很快發(fā)現(xiàn)你!或者,你可以選擇使用LTE加密狗或其他不太明顯的通信機制(例如Bluetooth或802.15.4無線電)進行連接。不過,這里將不討論如何設(shè)置它!
另外,我想我會嘗試使用USBProxy設(shè)置鍵盤記錄器。盡管它被做了特殊標記,但仍然可以正常使用!這個想法是通過創(chuàng)建相同的USB小工具描述符,并簡單地將數(shù)據(jù)包從一側(cè)復制到另一側(cè),來“鏡像”通過USB-A連接器插入R1S的USB設(shè)備。研究USB協(xié)議可能是最有趣的,但是開箱即用它也可以充當鍵盤記錄器。
除了要確保首先安裝libusb和libusb-dev軟件包外,我將不涉及編譯的所有細節(jié)。同樣,默認情況下,鍵盤記錄器功能與ROT13過濾器綁定,因此,你在鍵盤上輸入的任何內(nèi)容都將由13個字符轉(zhuǎn)置。因此,在編譯之前,你可能需要注釋掉第153行,其中添加了PacketFilter_ROT13插件。當你在那里時,還應通過將“r +”參數(shù)更改為“a +”,將第143行的fopen調(diào)用更改為追加到日志文件,而不是將其打開只進行讀取。主要原因是,如果輸出文件尚不存在,則執(zhí)行將失敗,另一種解決方法是在執(zhí)行之前修改outputfile。
編譯后,你可以運行usb-mitm –k來啟動鍵盤記錄器。這會將觀察到的擊鍵信息轉(zhuǎn)儲到stderr,這可能并沒有那么大的幫助。你還可以向-k開關(guān)傳遞一個可選參數(shù),指定要寫入的文件:usb-mitm –kkeystrokes,這會將觀察到的擊鍵記錄在輸出文件中。
捕獲的擊鍵
總而言之,我們創(chuàng)建了一個USB攻擊平臺,該平臺可用于將擊鍵和鼠標移動注入所連接的受害者,以及執(zhí)行各種其他USB攻擊,例如使用優(yōu)先級路由來啟動USB網(wǎng)絡(luò)接口。如果有現(xiàn)成的外部USB鍵盤可以通過R1S插入,我們也可以將其用作USB鍵盤嗅探器。接下來,我們將研究如何將R1S偽裝成以太網(wǎng)人員,插在已授權(quán)的受害者和其上游交換機之間。在這種配置中,我們可以利用受害計算機傳遞任何網(wǎng)絡(luò)身份驗證控制機制的能力,同時“劫持”其IP和MAC地址,以使R1S生成的任何流量實際上都來自受害計算機。
接下來,我將重點介紹兩種情況下作為以太網(wǎng)攻擊工具的操作。首先,作為可以連接到未使用的以太網(wǎng)端口的Dropbox,并提供對目標網(wǎng)絡(luò)的遠程訪問;其次,作為以太網(wǎng)的中間人(Ethernet Person in the Middle),可以將其放置在合法設(shè)備與其內(nèi)部設(shè)備之間。在上游交換機中,使用合法設(shè)備的IP地址和MAC地址覆蓋自己的流量。在第二種情況下,我們也可以擊敗網(wǎng)絡(luò)訪問控制措施,因為合法設(shè)備將處理所有這些。
但是,需要注意的一件事是引起任何異常網(wǎng)絡(luò)流量,這可能會引發(fā)警報。一個明顯的示例是在計劃的apt更新發(fā)生時對armbian.org進行DNS查找,或嘗試解析0.debian.pool.ntp.org。更復雜的可能是Linux特有的特定DHCP選項和參數(shù),這些選項和參數(shù)不適用于只支持windows的網(wǎng)絡(luò)。在將你的設(shè)備連接到潛在的惡意網(wǎng)絡(luò)之前,最好熟悉你的設(shè)備上運行的所有進程,以及它們在網(wǎng)絡(luò)上的確切樣子!稍后我將演示一種最小化這種意外流量的方法。
攻擊準備
如上所述,我假設(shè)你將內(nèi)置的WiFi接口配置為你控制的接入點的客戶端,或者配置為AP本身,這樣我們就可以通過WiFi連接到R1S,而不受P4wnP1的影響。你可以在命令行上使用nmtui連接到串行控制臺時完成此操作,如果你確實知道自己在做什么,則可以使用nmcli !設(shè)置以太網(wǎng)接口
第一個建議是重命名接口,以對應于案例中的LAN和WAN名稱,這有助于避免混淆接口。你可以使用以下命令來完成此操作,該命令可以正確配置systemd-network。
- printf "lan\tplatform-1c1b000.usb-usb-0:1:1.0\nwan\tplatform-1c30000.ethernet\n" | while read iface path; do
 - cat << EOF > /etc/systemd/network/10-$iface.link
 - [Match]
 - Path=$path
 - [Link]
 - Name=$iface
 - EOF
 - done
 
這將在/ etc / systemd / network /中創(chuàng)建兩個文件,分別以lan和wan接口命名,并帶有應重命名的設(shè)備的路徑。這些應該是NanoPi R1S的標準配置,但在其他設(shè)備上可能會有所不同。你還應該確保NetworkManager不會嘗試管理以下接口:
- cat << EOF >> /etc/NetworkManager/NetworkManager.conf
 - [keyfile]
 - unmanaged-devices=interface-name:wan,interface-name:lan
 - EOF
 
創(chuàng)建這些文件后,請重新啟動以激活規(guī)則,重命名接口并重新加載NetworkManager。
重命名后的wan和lan接口
讓我們考慮這樣一個場景:你發(fā)現(xiàn)了一個未使用的以太網(wǎng)端口,并希望連接你的設(shè)備。這是一個潛在的風險活動,因為任何網(wǎng)絡(luò)訪問控制(NAC)系統(tǒng)可以檢測你的未經(jīng)授權(quán)的活動,并警告操作人員。盡管如此,它很可能會成功,因此值得嘗試。
你要了解的第一件事是目標端口是否實際存在,幸運的是,我們可以使用NanoPi R1S上的3個LED來獲得即時反饋。不幸的是,LAN和WAN LED很難看到,呈綠色,而紅色SYS LED更容易看到。我建議的配置如下,SYS LED用來顯示CPU使用率,WAN和LAN LED用來顯示鏈路狀態(tài)(當鏈路被檢測到時)和被檢測到的RX流量(當只接收到流量時閃爍)。
- modprobe ledtrig-netdev # not loaded by default
 - cd /sys/class/leds/
 - echo cpu > LED1/trigger # labelled sys
 - echo netdev > LED2/trigger # labelled wan
 - echo wan > LED2/device_name
 - echo 1 > LED2/link
 - echo 1 > LED2/rx
 - echo netdev > LED3/trigger # labelled lan
 - echo lan > LED3/device_name
 - echo 1 > LED3/link
 - echo 1 > LED3/rx
 - ip link set dev wan up
 - ip link set dev lan up
 
為了在R1S每次啟動時都能運行,建議將以上內(nèi)容添加到/etc/rc.local。請注意,如果沒有IP鏈接設(shè)置部分,則鏈接檢測將無法工作!如果你希望紅色LED指示W(wǎng)AN鏈接,請在上面的腳本中交換LED1和LED2。
現(xiàn)在,如果你給R1S通電,只需將以太網(wǎng)線插入WAN或LAN端口,就會告訴你該數(shù)據(jù)線是否接通,以及該數(shù)據(jù)線是否有活動。這樣可以避免將R1S連接到禁用或斷開的端口。也就是說,R1S在以太網(wǎng)端口上也確實有指示燈LED,因此這不是完全必要的!
觸發(fā)硬件LED的選項,所選觸發(fā)器位于方括號中,當前為[cpu]
然后,你可以通過WiFi連接并開始監(jiān)視網(wǎng)絡(luò)流量,然后再決定要如何進行。例如,請求DHCP租約,或簡單地劫持觀察到的網(wǎng)絡(luò)范圍內(nèi)的未使用IP地址。
下一篇文章中,我們將介紹自動化攻擊方案、網(wǎng)絡(luò)訪問控制、網(wǎng)絡(luò)命名空間等可能的攻擊手段。
本文翻譯自:https://sensepost.com/blog/2020/making-the-perfect-red-team-dropbox-part-1/ 與 https://sensepost.com/blog/2020/making-the-perfect-red-team-dropbox-part-2/如若轉(zhuǎn)載,請注明原文地址。
























 
 
 






 
 
 
 