提交需求
*
*

*
*
*
立即提交
点击”立即提交”,表明我理解并同意 《美创科技隐私条款》

logo

    产品与服务
    解决方案
    技术支持
    合作发展
    关于美创

    申请试用
      《入侵生命周期细分实践指南系列》:协议隧道利用
      发布时间:2022-06-03 作者:美创科技安全实验室 阅读次数: 345 次

      美创科技为了更好地进行入侵检测和防御,参照各种安全威胁框架和自身的实践与思考,提出了基于入侵生命周期的攻击管理模型,作为美创新一代安全架构的三大支柱之一。

      入侵生命周期v1.0把入侵过程划分为7个阶段:探索发现、入侵和感染、探索感知、传播、持久化、攻击和利用、恢复。入侵生命周期v1.0同样以ATT&CK作为基本战术知识库,匹配到不同的入侵阶段。需要注意的是,并非所有的入侵都会经历这7个阶段,也没有绝对的线性次序。

      1)探索发现

      在这个阶段中,攻击者会先锁定攻击对象,然后利用某些技术手段,尽可能多地获取目标暴露出来的信息,如通过端口扫描、指纹探测等方式,发现敏感端口及版本信息,进而寻找攻击点,为下一步入侵做准备。

      2)入侵和感染

      在这个阶段,攻击者会根据“探索发现”阶段所发现的重要信息,来对目标暴露出的攻击面进行攻击尝试,在“探索发现”阶段收集到的信息越多,攻击对象所暴露的攻击面也就越多,攻击更易成功。

      3)探索感知

      攻击者在成功进入系统内部后,由于是首次进入所以会出现对内部环境不熟悉的情况,这时攻击者的动作一般会是对当前所处环境进行探索,摸清内部大致的网络结构,常常伴随着被入侵本机的敏感信息收集以及对内网大量的端口进行扫描,后续根据攻击者的目的进行下一步操作。

      4)传播

      在此阶段,攻击者根据上一阶段在内网探索感知收集到的信息,选择特定的攻击手法。如若发现内部是域环境,攻击者可能会尝试先攻破域控服务器,再传播其他机器。若是工作组环境,可能会利用收集到的端口和服务信息,选择特定漏洞进行批量扫描攻击,来尽可能多地继续获得其他计算机的控制权。

      5)持久化

      攻击者在对资产进行恶意操作后,为了能够减少再次连接的攻击成本,方便下次进入,会进行“留后门”的操作,常见的后门如:建立计划任务,定时连接远程服务器;设置开机启动程序,在每次开机时触发执行特定恶意程序;新建系统管理员账号等。这样便于攻击者下次快速登录并控制该系统。

      6)攻击和利用

      攻击者在此阶段便会开始对目标资产进行恶意操作,按照攻击者意愿,对能利用的数据进行窃取、利用;对操作系统、敏感文件进行破坏、删除。所有的防御手段都应该极力阻止攻击者进行到这一阶段。

      7)恢复

      攻击者在执行所有的攻击操作时,往往会在系统上留下大量的行为日志,因此在这一阶段,攻击者会对记录自身痕迹的所有日志进行处理,或删除或混淆,从而消灭证据,逃避追踪。



      本系列文章基于美创科技入侵生命周期1.0架构,细分各阶段攻击者的常用攻击手段,并对相关攻击手段的具体实施方式进行逐一剖析,为安全防御建设提供有力知识补充和反制准备。




        协议隧道利用(传播



      在实际的攻防过程中,往往会遇到边界防火墙进行端口或者特定协议拦截的情况。如防火墙配置策略只能由ssh或rdp登录,或者只允许某些特定的协议。在这种情况下,就可以利用隧道来尝试绕过防火墙策略。首先防火墙两端的数据包通过防火墙所允许的数据包类型或端口进行封装,然后穿过防火墙,与对方进行通信。当封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应服务器上,从而实现绕过防火墙效果。

      根据攻击者对协议隧道的攻击的链条看,其行为的输入输出如下:



      输入:被攻破的机器IP、端口、账号、密码

      输出:命令执行成功后的结果



      在渗透过程中,首先第一步先判断被攻破机器对外网的连通性情况。即判断机器能否上外网。综合判断各种协议(tcp/http/dns/icmp)及端口通信的情况,再决定选择何种方式构建隧道。常见的运行流量流出的端口有80,8080,443,53,110等。Icmp协议通过ping命令判断。Tcp协议通过nc命令判断。http协议通过curl命令。Dns协议通过nslookup,dig命令。

      其他还有如Ipv6隧道技术:通过ipv4隧道传送ipv6数据报的技术。攻击者有时会通过恶意软件来配置允许运行ipv6通信的设备,以避开防火墙和入侵检测系统。支持ipv6隧道工具socat,6tunnel,nt6ttunnel。

      下面我演示常见的两种构建隧道方式,即ssh隧道和rdp隧道

      一:使用plink.exe进行ssh隧道搭建

      plink.exe在安装putty时将会自带

      Plink -N username@ip -D 127.0.0.1:7070

      其中7070为本地代理端口,ip为远程受控机

      由于192.168.1.132服务器上为双网卡,可连通192.168.2.0/24段,因此可通过ssh隧道访问192.168.2.129。

      使用代理配置,注意这里代理类型选择socks5

      访问192.168.2.129,成功访问

      若不通过代理的话,由于攻击机不通192.168.2.0/24网段,因此无法访问

      二:使用rdp2tcp进行rdp隧道搭建

      1.下载并编译rdp2tcp

      攻击机为kali,安装mingw-w64

      Apt-get install mingw-w64

      下载rdp2tcp

      git clone https://github.com/V-E-O/rdp2tcp.git

      cd rdp2tcp

      修改配置文件

      rdp2tcp默认不支持编译64位的exe,所以这里需要修改配置文件,增加编译64位exe的配置信息

      修改文件Makefile,新的内容如下

      all: client server-mingw64
      client: client/rdp2tcpclient/rdp2tcp:  make -C client
      #server-mingw32: server/rdp2tcp.exe#server/rdp2tcp.exe:#  make -C server -f Makefile.mingw32
      server-mingw64: server/rdp2tcp64.exeserver/rdp2tcp64.exe:  make -C server -f Makefile.mingw64
      clean:  make -C client clean#  make -C server -f Makefile.mingw32 clean  make -C server -f Makefile.mingw64 clean  make -C tools clean

      新建文件/server/Makefile.mingw64,内容如下


      BIN=rdp2tcp64.exeCC=i686-w64-mingw32-gccCFLAGS=-Wall -g \     -D_WIN32_WINNT=0x0501 \     -I../common
      # -D_WIN32_WINNT=0x0501# -D_WIN32_WINNT=0x0501 -DDEBUG
      LDFLAGS=-lwtsapi32 -lws2_32OBJS=  ../common/iobuf.o \  ../common/print.o \  ../common/msgparser.o \  ../common/nethelper.o \  ../common/netaddr.o \  errors.o aio.o events.o \  tunnel.o channel.o process.o commands.o main.o
      all: clean_common $(BIN)
      clean_common:  $(MAKE) -C ../common clean
      $(BIN): $(OBJS)  $(CC) -o $@ $(OBJS) $(LDFLAGS)
      %.o: %.c  $(CC) $(CFLAGS) -o $@ -c $<
      clean:  rm -f $(OBJS) $(BIN)


      2.编译

      Make

      最终生成以下文件

      /server/rdp2tcp64.exe

      /client/rdp2tcp

      3.安装xfreerdp,这里我们kali自带的xfreerdp就可以实现tcp转发,因此不需要下载

      4.使用xfreerdp连接远程桌面并建立通道

      4.1执行xfreerdp并开启tcp重定向功能,在kali上执行

      xfreerdp /v:192.168.1.134:3389 /u:sojrs /p:1qaz@WSX /cert-ignore /rdp2tcp:/tmp/rdp2tcp/client/rdp2tcp

      4.2.将rdp2tcp64.exe上传至rdp server并执行,成功连接

      再次触发rdp2tcp64.exe,成功连接

      4.3.在kali系统上启动rdp2tcp.py

      添加正向端口转发的命令如下

      python rdp2tcp.py  add forward 127.0.0.1 7777 192.168.1.129 445

      使用nmap扫描可以看到,代理成功

      当然还可以添加socks5,将流量全部代理进去

      参考链接:

      https://3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-%E4%BD%BF%E7%94%A8%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2%E5%8D%8F%E8%AE%AE%E5%BB%BA%E7%AB%8B%E9%80%9A%E9%81%93

      免费试用
      服务热线

      马上咨询

      400-811-3777

      回到顶部