title: 登录脚本
tags:
- ATT&CK
author: 夜莺
categories: - ATT&CK
cover: ‘https://blog-1255850204.cos.ap-guangzhou.myqcloud.com/uPic/nbOxzv.jpg‘
abbrlink: 19818
date: 2020-02-12 19:57:18
ATT&CK矩阵-持久化-登录脚本
简介
每当特定用户或某一用户组的用户登录系统时,系统执行特定的脚本。这些脚本可能是攻击者存放的,用于下一步攻击动作。
测试用例
Windows
通常情况下,进入Windows界面之前有一个登录过程,在登录前系统执行脚本.
图形化
- 打开组策略,在
运行
输入gpedit.msc
打开组策略
- 依次点击计算机配置-Windows设置-脚本(启动/关机)
- 打开脚本,可在此添加cmd或者powershell脚本
注册表
- 注册表路径:
HKEY_CURRENT_USER\HKEY_CURRENT_USER\Environment
- 创建字符串键值
UserInitMprLogonScript
- 键值设置为特定的脚本路径即可
另外一种方式是修改winlogon Userinit
字段
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
Powershell的一键修改命令如下:
Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\WINDOWS NT\CurrentVersion\Winlogon" -name Userinit -value "C:\Windows\system32\userinit.exe,C:\WINDOWS\system32\cmd.exe"
Linux
- 直接在
etc/rc.d/rc.local(和/etc/rc.local是同一个文件,软链接)
末尾添加自己的脚本,后增加脚本执行权限
chmod +x /etc/rc.d/rc.local
- 通过
crontab
实现
crontab -e
@reboot /home/user/test.sh
- 每次登录自动执行脚本
在/etc/profile.d
目录下新建sh脚本,/etc/profile
会遍历/etc/profile.d/*.sh
相关脚本区别:
- /etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。
- /etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取(即每次新开一个终端,都会执行bashrc)。
- ~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,设置一些环境变量,执行用户的.bashrc文件。
- ~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。
- ~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是”父子”关系。
- ~/.bash_profile: 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。
Macos
Mac允许每当特定用户登录或退出系统时,以root用户身份运行登录和注销挂钩。登录钩告诉用户在登录时Mac OS X执行某个脚本,但是与启动项不同,登录钩以root身份执行。但是一次只能有一个登录挂钩。如果对手可以访问这些脚本,则他们可以在用户登录时向脚本中插入其他代码以执行其工具。
- 自定义脚本
- 设置默认打开方式为终端
- 设置开机自启动
进入系统偏好设置->用户与群组->登录项,将所需执行的脚本添加到登录项,并勾选后面的隐藏项,重新启动即可
利用自动操作
- 打开
自动操作
,新建应用程序
- 左侧选择shell
在终端中写入你想执行的脚本
- 存储为app,并在其添加到系统用户登录项