LLVM 代码混淆
这里是看雪学院课程LLVM与代码混淆技术的笔记,讲师是@34r7hm4n,讲的很好,希望大家有能力的支持一下原作者。
本文环境与作者稍有不同(WSL Kali + LLVM 16.0.0),作者提供的源代码有许多编译或者运行时会出现错误,本文中对其进行了修改,使之能够正常编译和运行,多数修改部分给出了注释或说明。
这里是看雪学院课程LLVM与代码混淆技术的笔记,讲师是@34r7hm4n,讲的很好,希望大家有能力的支持一下原作者。
本文环境与作者稍有不同(WSL Kali + LLVM 16.0.0),作者提供的源代码有许多编译或者运行时会出现错误,本文中对其进行了修改,使之能够正常编译和运行,多数修改部分给出了注释或说明。
首先是一个逆向
Windows 编程
不会 Node.js 的人已经不配再做 Web 狗了
用户账户分为本地和全局两种,全局用户可在网络上任意计算机上登录。
Windows 常用内置账户有 Guest(低权限) 和 Administrator(高权限),可以改名,不能删除。
用于简化系统管理,通过组可以一次性位一批用户设置权限。
内置组账号:Administrators, Users, Guests, Backup Operators, Replicator, * Operators(Print Account, Server), Domain *(Administrators, Users, Guests), Network, Interactive, Everyone
组分为本地组,全剧组和特殊组。全剧组分为三类,管理员组(Domain Admins),用户组(Domain Users),访客组(Domain Guests)。特别组不能通过用户管理器增加新成员,也不能被浏览和修改,有 System(操作系统), Creator owner(创建对对象拥有所有权的用户), Interactive(以交互方式在本地系统登录入网的所有哦用户), Network(系统中通过网络连接的所有用户), Everyone(登录上网的系统中的所有用户,相当于Interactive+Network,所有登陆账户都是Everyone组的成员)。
对于用户账户,应设置尽量小的权限。对于系统管理员,应妥善管理和设置口令。
应把性质相同的用户分在同一组,便于管理。
SID,安全标识符,唯一标识用户、组和计算机账户。Windows系统使用SID区分用户。
通过对注册表的 HKEY_LOCAL_MACHIENE\SAM\SAM\Domains\Account\Users\
下的子健操作可以克隆账户(需要System权限),可以使一个普通用户拥有与Administrator同样的权限。
账号克隆过程:打开CMD输入 net user beifeng$ 123 /add
,$可以隐藏用户。这个用户在cmd的net user里看不到,但是可以在计算机管理中看到。进入注册表 HKEY_LOCAL_MACHIENE\SAM\SAM\Domains\account\user\names\beifeng$
。将项beifeng$
、上层目录中与beifeng$
对应的000003f1
、与Administrator
对应的000001f4
导出为.reg,打开两个reg文件,将Administrator
用户对应的000001f4
下的键F的值复制,覆盖beifeng$
对应的项000003f1
下的F的值。删除beifeng$
用户(net user beifeng$ /del
),再把beifeng$.reg
和000003f1.reg
导入,设置密码(net user beifeng$ 123
),完成克隆。
入侵者克隆时一般选择已有的账号进行克隆,比如aspnet, guest等,通过本地管理员检查工具枚举账户可以发现 这样的克隆管理员。
Windows默认允许任何用户通过空用户得到系统所有账号和共享列表,得到用户名后暴力破解密码可以进行登录。
防止方式:控制面板,管理工具,本地安全策略选项,Windows设置,安全设置,本地策略,安全选项。将网络访问,不允许SAM账户的匿名枚举
和网络访问,不允许SAM和共享的匿名枚举
启用。
Administrator账户更名。
不显示上次登陆过的用户名。控制面板,管理工具,本地安全策略,本地策略,安全选项。启用登陆屏幕上不要显示上次登录过的用户名
。
强制Windows口令的复杂性。本地计算机策略,计算机配置,Windows设置,安全设置,账户策略,密码策略。
检查组和账号。我的电脑,管理,计算机管理,本地用户与组。或者通过cmd的net user命令。