網絡掃描獲取標志信息
標志信息是指一些主機或服務響應的歡迎信息或版本信息。例如,登錄FTP服務后,可能返回的標志信息為220(vsFTPd 3.0.3)或220 Welcome to blah FTP service.。這些信息可以幫測試人員確認服務類型。本文介紹獲取標志信息的方法。
### 1. Netcat標志信息
Netcat是一個多功能網絡化工具,使用該工具可以實現各種信息收集和掃描。下面介紹使用Netcat工具獲取標志信息的方法。使用Netcat工具獲取標志信息的語法格式如下:
nc -v [hostname] [port]
其中,-v表示顯示詳細信息。
使用Netcat工具獲取目標主機192.168.33.152上的21號端口標志信息。執行命令如下:
root@daxueba:~# nc -v 192.168.33.152 21
192.168.33.152 [192.168.33.152] 21 (ftp) open
220 Welcome to blah FTP service.
從輸出的信息中可以看到,通過Netcat工具識別出了主機192.168.33.152上的FTP服務,其標志信息為Welcome to blah FTP service.。由于Netcat工具維持一個開放的連接,因而運行nc命令后不會自動停止,需要使用Ctrl+C快捷鍵強制停止運行。
### 2. Python標志信息
在使用Python解釋器交互時,可以直接調用Python模塊,也可以導入任何希望使用的特定模塊。下面介紹通過導入套接字模塊,來獲取標志信息的方法。
使用Python套接字獲取主機192.168.33.152上21端口的標志信息,具體實現方法如下:
(1)啟動Python解釋器,執行命令如下:
Python 2.7.15+ (default, Jul 29 2021, 11:56:52)
[GCC 8.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
如果看到“>>>”提示符,則表示成功進入了Python解釋器的交互模式。
(2)導入套接字,執行命令如下:
>>> import socket
執行以上命令后,將不會輸出任何信息。
(3)配置新建的套接字,執行命令如下:
>>> bangrab = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
執行以上命令后,將不會輸出任何信息。
(4)初始化連接,執行命令如下:
>>> bangrab.connect(("192.168.33.152",21))
執行以上命令后,將不會輸出任何信息。如果嘗試連接一個沒有開放端口的連接時,Python解釋器將返回一個錯誤信息:
Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 111] Connection refused
從輸出的錯誤信息中可以看到,目標端口拒絕了該連接。由此可以說明目標端口沒有運行,也就意味著將無法獲取對應的標志信息。
(5)獲取標志信息。執行命令如下:
>>> bangrab.recv(4096)
'220 Welcome to blah FTP service.\r'
從輸出的信息中可以看到,已經成功獲取到了目標主機上21端口號的標志信息。而獲取到的標志信息為220 Welcome to blah FTP service.。
(6)關閉與遠程服務的連接,并退出Python程序。執行命令如下:
>>> bangrab.close() #關閉與遠程服務的連接
>>> exit() #退出Python程序
執行以上命令后,則成功退出了Python程序。
### 3. Dmitry標志信息
Dmitry是一個一體化的信息收集工具,使用該工具對目標主機實施掃描,也可以獲取到一些標志信息。下面介紹使用Dmitry工具獲取標志信息的方法。
使用Dmitry工具獲取標志信息的語法格式如下:
dmitry -pb [host]
以上語法中的選項及含義如下。
-p:實施一個TCP端口掃描。
-b:獲取掃描端口返回的標志信息。
使用Dmitry工具獲取目標主機192.168.33.152上運行服務的標志信息。執行命令如下:
root@daxueba:~# dmitry -pb 192.168.33.152
Deepmagic Information Gathering Tool
"There be some deep magic going on"
HostIP:192.168.33.152 #主機IP地址
HostName:192.168.33.152 #主機名
Gathered TCP Port information for 192.168.33.152 #收集的TCP端口信息
---------------------------------
Port State #端口及狀態
21/tcp open
>> 220 Welcome to blah FTP service. #標志信息
22/tcp open
>> SSH-2.0-OpenSSH_7.8p1 Debian-1 #標志信息
80/tcp open
Portscan Finished: Scanned 150 ports, 146 ports were in state closed
All scans completed, exiting
從以上輸出信息中可以看到,目標主機上開放的端口有3個,分別是21、22和80。其中,獲取到了TCP的21和22號端口對應的標志信息。
### 4. Nmap NSE標志信息
在Nmap工具中有一個集成的Nmap Scripting Engine(NSE)腳本,該腳本可以通過遠程端口來讀取正在運行的網絡服務標志信息。Nmap NSE腳本可以使用Nmap中的--script選項調用,并且使用-sT選項指定的TCP全連接。當TCP全連接建立時,即可收集到服務的標志信息。下面介紹使用Nmap NSE獲取標志信息的方法。
使用Nmap NSE獲取標志信息的語法格式如下:
nmap -sT [host] -p [port] --script=banner
以上語法中的選項及含義如下。
-sT:實施TCP全連接掃描。
-p:指定掃描的端口號,這里可以指定單個端口、多個端口或端口范圍。如果指定多個不連續端口時,則之間使用逗號(,)分隔;如果指定端口范圍時,則之間使用連接符進行連接;如果指定掃描所有端口的話,則使用-p-。
--script=banner:使用banner腳本實施掃描。
掃描目標主機上所有端口的標志信息。執行命令如下:
root@daxueba:~# nmap -sT 192.168.33.152 -p- --script=banner
Starting Nmap 7.70 ( https://nmap.org ) at 2021-07-29 16:54 CST
Nmap scan report for 192.168.33.152 (192.168.33.152)
Host is up (0.00022s latency).
Not shown: 65532 closed ports
PORT STATE SERVICE #端口信息
21/tcp open ftp
|_banner: 220 Welcome to blah FTP service. #標志信息
22/tcp open ssh
|_banner: SSH-2.0-OpenSSH_7.8p1 Debian-1 #標志信息
80/tcp open http
MAC Address: 00:0C:29:FD:58:4B (VMware)
Nmap done: 1 IP address (1 host up) scanned in 17.72 seconds
從以上輸出信息中可以看到獲取到的標志信息。
### 5. Amap標志信息
Amap是一個應用程序映射工具,可以用來通過遠程端口來讀取正在運行的網絡服務標志。下面將介紹使用Amap工具以獲取標志信息的方法。
使用Amap獲取標志信息的語法格式如下:
amap -B [host] [port]
其中,-B表示獲取標志信息。
使用Amap工具獲取目標主機192.168.33.152上22號端口的標志信息。執行命令如下:
root@daxueba:~# amap -B 192.168.33.152 22
amap v5.4 (www.thc.org/thc-amap) started at 2021-07-29 17:00:44 - BANNER
mode
Banner on 192.168.33.152:22/tcp : SSH-2.0-OpenSSH_7.8p1 Debian-1\r
amap v5.4 finished at 2021-07-29 17:00:44
從以上輸出信息中可以看到,通過Amap工具成功獲取到了目標主機上22號端口對應的標志信息。其中,該標志信息為“SSH-2.0-OpenSSH_7.8p1 Debian-1”。