工具软件 [2022]CTF的Impacket指南:SMB/MSRPC 有很多CTF的场景,遇到window的系统不能直接登录,但是可以使用SMB进行远程操作,于是诞生了一款MS-RPC的操作合集工具,这叫做 Impacket 阅读全文 2022-11-04 huoji 0 条评论
工具软件 [2022]ida7.6能用的虚表跳转修复插件 能自动解决虚表跳转的问题,自动生成结构.来自UC新闻网,病毒请自测! vt: https://www.virustotal.com/gui/file/3d44754db7c33884ca4d3c407fa97d74487560379f932056f08bdfc78cf5f747 ![FqJzXD-ag8CHL2tAZh_qqGhbOB6n.jpg](https://key08.com/usr/uploads/2022/11/3062870747.jpg) ![FtfdH_EHWJGSVvEQprR5DPkAgHEy.jpg](https://key08.com/usr/uploads/2022/11/3882399915.jpg)![FtfdH_EHWJGSVvEQprR5DPkAgHEy.jpg](https://key08.com/usr/uploads/2022/11/3882399915.jpg) [HexRaysCodeXplorer75.zip](https://key08.com/usr/uploads/2022/11/549389900.zip) 阅读全文 2022-11-04 huoji 0 条评论
系统安全工具软件 [2022] yara scan -一个简单的小巧的应急响应工具 这个是应急用的给朋友定制的,他们说一个公司发现了一个病毒基本上其他的机器都有同样的文件只不过位置不一样.所以找我做了一个东西能扫描相同文件之类的把这些全扫出来. 工具功能: > 根据yara规则匹配文件 匹配特定hash(sha1)的文件 根据特定文件名字匹配文件 自动生成报告 截图: ![1.jpg](https://key08.com/usr/uploads/2022/08/3841569265.jpg) 用法: 下载release [Release.zip](https://key08.com/usr/uploads/2022/08/1188834289.zip) 编辑config.json ```cpp { "scan_path": ["C:"], "hashes": [ "EE9E2816170E9441690EBEE28324F43046056712" ], "filenames": [ "InstDrv.bin" ] } ``` 其中scan_path是扫描目录,不要\\结尾 hashes是sha1,filenames是文件名字. yara目录放了一些病毒的yara检出(VT上的那些),如果有需要可以自己补充或者删减. 扫描完毕后,在程序目录有一个log文件,那就是扫描结果.可以让客户发回来分析问题 阅读全文 2022-08-19 huoji 0 条评论
python工具软件二进制安全 [2022] 基于NLP的威胁检出引擎 NLP引擎出自于我的一个简单的想法 - 既然人可以通过汇编看出软件是否是病毒 那么机器是否可以通过汇编看呢? 为了让机器能看得懂代码,我首先想到的是非常经典的NLP分类问题,所谓的NLP分类问题,就是训练的时候给一堆词语+词频,推理的时候先把句子中的词语分出来,再然后计算这些词语的词频,最后得出这条句子属于什么类别的结论 阅读全文 2022-03-17 huoji 1 条评论
系统安全工具软件二进制安全 [2021]AppDomainManager劫持与powershell hook解码 在红队渗透中,有一种持久化技术经常被使用,那就是AppDomainManager劫持,具体原理本章不再叙述,简单来说,在.net目录新建一个同样文件的.config文件,就可以控制.net的appdomainmanger加载,攻击者往往利用这个特性做后门 ```asp ``` 在安全产品对抗中,安全产品时刻面临着powershell的挑战原因很简单,powershell这玩意,简直是小黑和apt组织狂喜,各种花里胡哨的加密与解密去绕过edr/av,并且微软的amsi接口也各种拉胯,甚至是可以被powershell自己绕过,所以就不能指望微软了,要自己干 -powershell的hook ### 如何获取干净的powershell指令 powershell本质上是基于.net的解释器,在powershell脚本代码执行后,会被编译成il代码继续执行,因此为了解决powershell被混淆的问题,我们需要想办法hook powershell的编译代码,好消息是微软的.net相当于开源,所以很快就能找到这个函数: ```asp System.Management.Automation.CompiledScriptBlockData ``` ![](https://key08.com/usr/uploads/2021/11/1354091260.png) 顺便吐槽一下微软的amsi: ![](https://key08.com/usr/uploads/2021/11/2089727795.png) ### 如何hook 在我们劫持了AppDomainManager启动后,我们需要干的第一件事就是监听程序集加载: ```cpp private const BindingFlags anyType = BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; private static readonly AssemblyLoadEventHandler HookAssemblyLoadEventHandler = new AssemblyLoadEventHandler(Rm_OnAssemblyLoad); private static void Rm_OnAssemblyLoad(object sender, AssemblyLoadEventArgs args) { string assemblyName = args.LoadedAssembly.GetName().Name; string assemblyFullName = args.LoadedAssembly.Location; if (assemblyName == "System.Management.Automation") { ...这里就是程序集加载事件了 ``` 之后,我们要得到此函数的指针 ![](https://key08.com/usr/uploads/2021/11/3051046094.png) ```cpp MethodInfo ReallyCompile = targetMethodClass.GetMethod("ReallyCompile", anyType, null, targetMethodType, null); ... RuntimeHelpers.PrepareMethod(ReallyCompile.MethodHandle); ... IntPtr TargetAddress = ReallyCompile.MethodHandle.GetFunctionPointer(); ``` 然后hook他 ```cpp if (!MinHook.InstallHook(TargetAddress, HookAddress, TrampolineAddress)) { throw new ArgumentNullException("[HUOJI] Min Hook Fail"); //仅供测试,一般要return } ``` 至此,我们就hook了powershell并且拿到了正确信息: ```cpp public void HookReallyCompile(bool optimize) { string Code = this.ToString(); Helper.DbgPrint(Code); .... ``` ![](https://key08.com/usr/uploads/2021/11/1201952192.png) 阅读全文 2021-11-22 huoji 0 条评论
系统安全工具软件C/C++一线开发 [2021]不用hook在R3实现全局捕获syscall调用 在R3下ETW实现了一套接口允许你拿到一些syscall调用信息 在cmd下,输入如下代码: ```cpp logman start "NT Kernel Logger" -p "Windows Kernel Trace" (syscall) -o sys.etl -ets ``` 一段时间后停止 ```cpp logman stop "NT Kernel Logger" -ets ``` 接着转换成可读的格式: ```cpp tracerpt sys.etl ``` 你就看到对应的syscall了: ![](https://key08.com/usr/uploads/2021/10/2047136662.png) **但是,看情况我们目前只能拿得到两个信息: ** 1. syscall的index 2. syscall的处理器id 3. syscall的地址 **我们没办法拿到的信息并且是关键信息的有: ** 1. syscall的进程id 2. syscall的具体名字/内容 **我将会在这篇文章介绍一种非常巧妙的移花接木的方法来获取这些必要信息并且实现r3的dll注入检测 ** ### 线程切换 我们需要第一步推导出syscall的调用者是谁,但是etw并没有给我们更多的详细信息,因此我们需要做一个hack去获取它,那就是通过线程切换事件 线程切换事件ETW也会给我们消息,我们能知道: 1.老线程id 2.新线程id 3.老线程的状态 4.当前处理器id 阅读全文 2021-10-19 huoji 0 条评论
工具软件 [2021]Cobalt Strike的DOS漏洞 CS对 截屏(或keylogger)功能的返回数据解析处理不当,可被攻击者控制截屏大小,使teamserver不断申请内存以致outofmemory,从而被DOS https://github.com/JamVayne/CobaltStrikeDos 阅读全文 2021-09-23 huoji 0 条评论