title: 登录脚本
tags:


ATT&CK矩阵-持久化-登录脚本

简介

每当特定用户或某一用户组的用户登录系统时,系统执行特定的脚本。这些脚本可能是攻击者存放的,用于下一步攻击动作。

测试用例

Windows

通常情况下,进入Windows界面之前有一个登录过程,在登录前系统执行脚本.

图形化

  1. 打开组策略,在运行输入gpedit.msc打开组策略
    登录脚本 - 图1
    登录脚本 - 图2
  1. 依次点击计算机配置-Windows设置-脚本(启动/关机)
    登录脚本 - 图3
  1. 打开脚本,可在此添加cmd或者powershell脚本
    登录脚本 - 图4

注册表

  1. 注册表路径:
    HKEY_CURRENT_USER\HKEY_CURRENT_USER\Environment
  2. 创建字符串键值UserInitMprLogonScript
    登录脚本 - 图5
  3. 键值设置为特定的脚本路径即可
    登录脚本 - 图6

另外一种方式是修改winlogon Userinit字段
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
登录脚本 - 图7
登录脚本 - 图8
Powershell的一键修改命令如下:
Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\WINDOWS NT\CurrentVersion\Winlogon" -name Userinit -value "C:\Windows\system32\userinit.exe,C:\WINDOWS\system32\cmd.exe"
登录脚本 - 图9
登录脚本 - 图10

Linux

  1. 直接在etc/rc.d/rc.local(和/etc/rc.local是同一个文件,软链接)末尾添加自己的脚本,后增加脚本执行权限
    chmod +x /etc/rc.d/rc.local
  1. 通过crontab实现
  1. crontab -e
  2. @reboot /home/user/test.sh
  1. 每次登录自动执行脚本
    /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身份执行。但是一次只能有一个登录挂钩。如果对手可以访问这些脚本,则他们可以在用户登录时向脚本中插入其他代码以执行其工具。

  1. 自定义脚本
  2. 设置默认打开方式为终端
  3. 设置开机自启动
    进入系统偏好设置->用户与群组->登录项,将所需执行的脚本添加到登录项,并勾选后面的隐藏项,重新启动即可
    登录脚本 - 图11

利用自动操作

  1. 打开自动操作,新建应用程序
    登录脚本 - 图12
  1. 左侧选择shell
    登录脚本 - 图13
    在终端中写入你想执行的脚本
    登录脚本 - 图14
  1. 存储为app,并在其添加到系统用户登录项
    登录脚本 - 图15

缓解措施

  1. 限制文件和目录权限,将登录脚本的写权限限制为特定管理员才能操作。

    侦测手段

  2. 部署安全设备,监控相关文件路径,有异常操作报警

  3. 监控登录脚本,防止异常用户异常时间访问。查找非正常用户在正常职责范围之外添加或修改过