本週主要學習了《網絡攻防---技術與實踐》第4章的內容,主要學習了網絡嗅探與協議分析。html
主要學習了網絡嗅探器軟件 tcpdump 與網絡協議分析工具 Wireshark ,如下對學習過程當中存在的問題進行總結。linux
tcpdump 工具使用起來很方便,其命令構成可簡單表示成:web
tcpdump [選項] 表達式
選項當中經常使用 -i
,用來指明監聽的網卡,例如:正則表達式
tcpdump -i eth0 //監視全部通過eth0網卡的數據包
在不指定網卡的狀況下,默認第一個網卡,通常是eth0。
表達式採用正則表達式的結構,用來對監聽到的信息進行過濾,例如監聽本機(IP 192.168.37.130
)做爲源主機向外發送的全部數據包:apache
tcpdump src 192.168.37.130 and tcp dst port 80
其過濾規則按照需求可隨意搭配。
爲方便理解,抓取本機與靶機(IP 192.168.37.220
)之間的通訊,爲了完整顯示兩者之間的通訊過程,能夠先將本機關於靶機的arp緩存刪掉(若是以前兩者沒有進行過通訊,則不須要這一步):ubuntu
arp -d 192.168.37.220
爲了更好的閱讀,使用選項 -nn
,以 IP 及 Port Number 顯示,而不用主機名與服務名稱:瀏覽器
tcpdump -nn host 192.168.37.130 and 192.168.37.220
利用tcpdump抓取到的TCP數據包的信息通常是:緩存
src > dst: flags data-seqno ack window urgent options 其中: src > dst:代表從源地址到目的地址; flags:是TCP報文中的標誌信息,S 是SYN標誌(表示創建鏈接), F 是FIN標誌(表示關閉鏈接), P 是PSH標誌(表示有 DATA數據傳輸), R 是RST標誌(表示鏈接重 置),「.」 (沒有標記); data-seqno:是報文中的數據包的順序號; ack:是下次指望的順序號; window:是接收緩存的窗口大小; urgent:代表報文中是否有緊急指針; Options:是選項。
從以上抓取到的數據當中,咱們能夠作如下分析:
第1條是 ARP 報文請求,向本機詢問 IP 192.168.37.220
的MAC地址。
第2條是 ARP 報文回覆,告知 IP 192.168.37.220
的MAC地址是 00:0c:29:c9:19:41
。
第3條至第5條,是TCP協議的三次握手,在第3條中,咱們能夠看到本機的TCP端口是34480,它與靶機端口80之間創建TCP鏈接,本機發送SYN包,seq=2626420257;在第4條中,靶機收到SYN包後,確認該SYN包,應答 ack=2626420258(正好是上一條中的 seq+1),再發一個SYN包,seq=4051344195;在第5條中,本機收到靶機的ACK+SYN包後,向靶機發送一個確認包,確認包的ack=seq+1,此處卻顯示爲1,緣由是tcpdump對於一個tcp鏈接上的會話, 只打印會話兩端的初始數據包的序列號,其後相應數據包只打印出與初始包序列號的差別,即初始序列號以後的序列號,可被看做此會話上當前所傳數據片斷在整個要傳輸的數據中的相對位置,能夠添加參數 -S
,將tcp的序列號以絕對值形式輸出,而不是相對值:安全
tcpdump -nn -S host 192.168.37.130 and 192.168.37.220
第6條代表本機向靶機發送了399字節的數據(字節的編號爲1到400),包中設置了PSH標誌。
第7條代表靶機已經收到了這399字節的數據,回覆ack=400。
第八、9條代表二者間又傳輸了233字節的數據。服務器
實踐: 利用 tcpdump工具,在訪問 www.tianya.cn
時,瀏覽器訪問了哪些Web服務器?
在與Web服務器的訪問過程當中,總會創建TCP鏈接,能夠抓取同時帶有SYN包與ACK包的數據,其實也就是三次握手中的第二次。
tcpdump -nn '(tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack != 0) and (host 192.168.37.130)'
從上圖能夠看到在訪問天涯社區時與主機創建TCP鏈接的服務器ip。經過:
tcpdump -nn host 192.168.37.130 and tcp port 80
能夠查看數據包的詳細信息。
我所用的 Wireshark工具,是Kali Rolling中自帶的版本。
以瀏覽器訪問百度頁面爲例,能夠抓取到如下數據包:
前4條是DNS服務,找尋域名 www.baidu.com
所對應的IP地址,其中 192.168.37.2
是本機所設定的DNS地址,經過界面中部的協議樹窗口能夠獲得更加詳細的信息:
第1條:
表示本機在向DNS詢問域名 www.baidu.com
在Internet上的IPV4地址。
第2條:
表示本機在向DNS詢問域名的IPV6地址。
第3條:
表示DNS向本機回覆,百度指向了另外一個別名 www.a.shifen.com
,並給出了一個權威DNS服務器 ns1.a.shifen.com
.
第4條:
能夠看到,域名 www.a.shifen.com
對應了2個IP地址,還給出了5個DNS服務器。至此,咱們已經獲得百度的IP地址了。
第5-7條代表開始創建TCP鏈接,表示TCP協議中的3次握手:
第5條:
表示本機在向百度服務器請求創建TCP鏈接(SYN),其中SYN序號爲0。
第6條:
表示百度服務器在響應本機的鏈接請求,確認鏈接,發送SYN包與ACK包,SYN序號爲0,ACK包序號爲1。
第7條:
表示本機收到SYN+ACK包後,再次發送確認包,ACK包的序號爲1。至此,兩者的TCP鏈接已經創建。
第8-11條是雙方在進行HTTP協議方面信息的交互。
實踐: 利用 Wireshark工具,以telnet方式登陸BBS進行嗅探分析。
爲方便測試,如下 Wireshark工具是運行在Windows環境下的:
因爲如今大多數論壇再也不採用telnet進行登陸,因此我選擇在ubuntu虛擬機( IP 192.168.37.150
)當中搭建一個telnet服務,再實現telnet登陸以用來嗅探分析(本機IP 192.168.37.200
)。
關於Ubuntu中配置telnet,引用 ubuntu 14.04中打開telnet服務步驟-Linux_ever 中的介紹:
一、首先查看telnet運行狀態 #netstat -a | grep telnet 輸出爲空,表示沒有開啓該服務 二、安裝openbsd-inetd #apt-get install openbsd-inetd 若是已經安裝過了,會提示已經安裝過了,直接執行下面的步驟就能夠了。 三、安裝telnetd #apt-get install telnetd 安裝完以後,查看/etc/inetd.conf的內容會多了一行telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd #cat /etc/inetd.conf | grep telnet 輸出: telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd 四、重啓openbsd-inetd # /etc/init.d/openbsd-inetd restart 輸出:* Restarting internet superserver inetd 五、查看telnet運行狀態 #netstat -a | grep telnet 輸出:tcp 0 0 *:telnet *:* LISTEN 此時代表已經開啓了telnet服務。 六、telnet登錄測試 #telnet 127.0.0.1 輸出: Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. (停在這裏的時候要按Ctrl+] 而後回車) telnet> (表示登錄成功)
按照以上步驟,Ubuntu上的telnet服務就建成了:
使用如下命令,能夠查看到telnet服務的端口默認爲23:
在PC上打開DOS(前提pc與虛擬機能夠ping通,且pc上的telnet服務已經開啓),按如下方式就可進入:
鏈接以後,輸入用戶名及密碼便可登錄成功:
在 Wireshark 當中,過濾器直接輸入 telnet
,便可過濾顯示telnet相關的數據包。
可看到,在最初鏈接時,先是利用ARP協議獲取目標機的MAC地址,再進行TCP三次握手創建鏈接。後面就是傳遞服務器的信息,從如下兩條就能看出來:
傳遞Ubuntu版本信息:
傳遞用戶名輸入信息:
而後輸入登陸用戶名及密碼,從抓取到的數據包能夠發現用戶名及密碼都是一個字符一個字符傳輸的:
重要的是登陸的密碼是以明文形式傳輸的,因此能夠很容易獲取到密碼:
綜上,使用telnet方式登陸時,經過抓包能夠很容易獲得用戶名及密碼,因此這種方式很不安全。
本週主要學習了視頻 KaliSecurity 11-15 ,學習了Kali漏洞分析中的掃描工具、WEB爬行工具、WEB漏洞掃描工具。
在學習WEB漏洞掃描工具 Cadaver 與 davtest 時,我所用的靶機 Metasploitable 中沒有搭建WebDAV服務環境,在網上查找相關資料後,解決步驟以下。
在靶機 Metasploitable 中,首先進入 /var/www
目錄:
輸入命令:
sudo a2enmod dav_fs sudo a2enmod dav
啓動WebDAV服務(前提是已經安裝了 apache 服務)。
建立一個目錄並受權給 apache 服務:
sudo mkdir /var/www/webdav sudo chown www-data:www-data /var/www/webdav
建立一個存放密碼的目錄:
sudo mkdir /var/www/webdavpasswd
建立登陸用戶:
sudo htpasswd -c /var/www/webdavpasswd/passwd.dav admin
受權密碼目錄給 apache服務:
sudo chown www-data:www-data -R /var/www/webdavpasswd
設置密碼文件讀寫權限:
sudo chmod 640 /var/www/webdavpasswd/passwd.dav
在使用靶機 Metasploitable 的過程當中,因爲是純命令行,使用起來不是很方便,可採用 SSH Secure Shell工具,在PC機上遠程登陸虛擬機,方便使用,前提是虛擬機與PC機能夠互相ping通,使用方法以下:
首先在靶機當中使用命令 sudo /etc/init.d/ssh start
將SSH服務打開:
而後再PC上打開SSH Secure Shell工具,將相應的靶機IP、用戶名輸入,鏈接便可:
接下來,繼續配置WebDAV服務器,在 Apache2 配置文件當中寫入相應配置,配置文件爲 /etc/apache2/sites-enabled/000-default
,打開文件後,在 virtialhost
當中添加如下內容:
Alias /webdav "/var/www/webdav" <Directory /var/www/webdav> DAV On AuthType Basic AuthName "admin" AuthUserFile /var/www/webdavpasswd/passwd.dav Require valid-user </Directory>
上述配置在利用 Cadaver
工具掃描時有個問題,靶機上的webDAV服務有登陸密碼,爲了測試帶有漏洞的服務,能夠註釋掉相應的配置,實際以下:
爲了方便測試,在webdav目錄下建立一個文件:
在Kali當中,打開瀏覽器,輸入地址 http://192.168.37.220/webdav
,便可看到靶機webdav目錄下的內容:
這樣,靶機當中的WebDAV服務環境就搭建完成了,此時就可使用 Cadaver 工具,對靶機的WebDAV進行掃描了:
也能夠利用 DAVtest 工具對WebDAV服務器進行文件上傳測試:
在靶機下能夠查看到已上傳的文件:
完成網絡攻防課程的學習,完成各類攻防實踐操做。
學習了《網絡攻防---技術與實踐》第4章的內容,學習了KaliSecurity的11 - 15視頻,着重學習了tcpdump、Wireshark工具的使用。