账号安全那些事儿 – 作者:secisland

随着《网络安全法》正式成为法律法规,等级保护系列政策更新,“安全” 对于大部分企业来说已成为“强制项”。然而,网络空间安全形势日趋复杂和严峻。账号安全,也在不断的威胁着企业核心数据安全。

根据最新的 IBM 全球威胁调查报告《X-Force威胁情报指数2020》,受攻击网络中 60% 的初始访问都是利用以前窃取的凭据或已知的软件漏洞,从而使攻击者更少依赖欺骗来获取访问权限。

概述

以操作系统、数据库、网络设备运维视角设定账号,这类账号一旦设定,不能随时删除,因此,在员工离职、调岗等异动时不能通过删除账号来实现账号权限回收。

特权账号保管不善,导致登录凭证泄露、丢失,被恶意攻击者、别有用心者获取,然后被攻击者利用该登录凭证非授权访问业务系统,进而可能导致系统数据被删除、恶意增加管理员权限、非法下载大量数据等。特权账户从创建、使用、保存、注销等全过程更是面临较大泄露风险,比如有些特权账户需要进行多次流转(从超级管理员到普通管理员传递),目前普遍采用邮件、微信的方式的进行传递,有些安全意识较高的可能还进行加密处理,有些安全意识差的或者应急场景,密码明文传输更是比比皆是。攻击者若获取部分的账户、密码可能会对企业进行大范围的横向扩展攻击,导致系统遭受大面积入侵。

基于异常账号(黑名单账号,失效账号)和账号异常行为(绕行登录,单账号多IP登录,非上班时间登录,高危操作和敏感文件访问)维度分析,能及时发现某账号的操作行为时间轴轨迹,形成立体画像,及时检测威胁,避免安全威胁进一步扩大化,有效降低安全损失。

二、账号安全威胁检测措施

1.黑名单账号登录

告警发生场景:源用户账号不在用户指定的白名单账号列表中,并且曾经产生过一些攻击、违规等行为的账号可以列为黑名单账号重点关注。

攻击方式:以黑名单账号登录系统,产生攻击、违规等风险行为。

检测思路:通过登录日志查看账号信息是否不在用户自定义的白名单账号列表中,将产生异常行为(绕行登录,单账号多IP登录,非上班时间登录,高危操作和敏感文件访问)的账号设置为黑名单账号列表,账号不在白名单且在黑名单列表中的触发告警。如白名单账号产生异常行为后,将转成黑名单账号。

日志来源:以 linux 系统登录日志为例

Sep 2 15:47:10 localhost sshd[21996]: Accepted password for blackhat from 192.168.1.41 port 60982 ssh2

人工分析:用户在日常运维中可以建立资产账号的黑白名单库,白名单账号为合法账号,黑名单账号为产生异常行为(绕行登录,单账号多IP登录,非上班时间登录,高危操作和敏感文件访问)的账号。通过查看登录日志筛选出所有登录账号,比对是否不在白名单账号中并属于黑名单账号。

工具分析:集中采集 linux 系统登录日志,解析关键字段:事件类型为登录,结果是否登录成功,登录账号信息,通过自定义黑白名单账号字典,账号信息命中不在白名单账号且在黑名单账号即刻触发告警,能大幅提升黑名单账号风险识别效率。

2. 失效账号登录

告警发生场景:源用户账号为失效账号,失效账号可能为离职员工账号、已经禁用/删除或过期的账号,正常不会用失效账号登录。

攻击方式:以失效账号登录系统,产生攻击、违规等风险行为。

检测思路:通过登录日志查看账号信息是否为失效账号。

日志来源:以linux系统登录日志为例

Sep 10 15:40:10 localhost sshd[21996]: Accepted password for invalid from 192.168.1.41 port 60982 ssh2

人工分析:查看登录日志筛选出所有登录账号,比对是否属于失效账号。

工具分析:集中采集linux系统登录日志,解析关键字段:事件类型为登录,结果是否登录成功,登录账号信息,通过自定义失效账号字典,账号信息命中失效账号字典即刻触发告警,能大幅提升失效账号风险识别效率。

3.多账号登录同一重要资产失败

告警发生场景:多个不同的账号登录同一个目标资产失败,可能存在有意的批量账号猜测攻击。

攻击方式:以多个不同的账号登录同一个目标资产尝试进行密码猜测暴力破解。

检测思路:超过3个以上不同账号登录同一个目标主机失败。

日志来源:以linux系统登录日志为例

Sep 10 15:40:10 localhost sshd[21996]: Failed password for userA from 192.168.1.41 port 60982 ssh2Sep 10 15:42:12 localhost sshd[6116]: Failed password for userB from 192.168.1.39 port 60982 ssh2Sep 10 15:43:15 localhost sshd[1828]: Failed password for userC from 192.168.1.21 port 60982 ssh2

人工分析:需要查看同一台目标主机的登录失败日志,是否在短时间内有多个不同的源IP、不同账号登录失败。

工具分析:集中采集 linux 系统登录日志,解析关键字段:事件类型为登录,结果是登录失败,针对同一个目标系统,在一段时间内失败超过 3 次即刻触发告警,能大幅提升账号风险行为识别效率。

4.单账号多 IP 登录

告警发生场景:某账号已登录,在未退出的情况下从另一源 IP 地址成功登录,可能密码外泄或被破解。

攻击方式:攻击者获取账户信息后从多个 IP 地址成功登录,通过多 IP 干扰溯源取证。

检测思路:通过多条日志关联分析,登录结果成功的账户为同一个账户,但是源IP不同,即可判定属于单账号多IP登录事件,触发告警。

日志来源:系统登录日志

1)Linux 环境登录日志查看

Linux 用户登录日志存放在 /var/log/secure 中,以 CentOS 7 为例,查看 secure.log,看到登录日志样例如下:

1616147909_605475c560ad9602445cd.png!small?1616147909456

人工分析:目标主机 192.168.1.161 在 2020-5-24 17: 13 登录成功的源IP 有两个:192.168.1.162 和 192.168.1.3,账户均为 root,在 192.168.1.162 登录成功未退出的情况下,源用户 root 又在 192.168.1.3 成功登录,属于单账号多 IP 登录,存在账号密码外泄的风险。

2)Windows 环境登录日志查看

例如,查看 Windows server 2012 服务器的登录日志,通过菜单“工具”-“事件管理器”-“Windows日志”-“安全”可以发现登录日志,原始登录日志样例如下:

1616147924_605475d49b82005a22b68.png!small?1616147924889

可以看到事件 ID 为 4624,结果为审核成功,代表登录成功。

点击“详细信息”,选择“XML”视图,可以看到详细的 Windows server 登录日志关键信息,包括登录类型为 10,表示此次登录是远程桌面登录,非本地登录或文件共享登录。

源 IP 为 192.168.1.162。除了 Windows server 2012 本地 IP 192.168.1.127 通过 Administrator 账号登录以外,同时还有通过源 IP 192.168.1.162 也是 Adminstrator 账号的登录成功记录。

1616147942_605475e6d7c07ab49cc92.png!small?1616147943284

人工分析:目标主机 192.168.1.127 在 2020-5-20 17: 39 登录成功的源 IP 有两个:192.168.1.127 和 192.168.1.162,账户均为 Administrator,属于单账号多 IP 登录,存在账号密码外泄的风险。

工具分析:通过日志分析工具统一采集系统登录日志,解析关键字段:事件类型为登录,结果是否登录成功,设置多维度关联告警规则触发单账号多IP登录告警,即在登录成功的前提下,多条日志中源用户字段相同,源IP不同,表示通过同一账号不同的源IP登录系统成功。

5.非上班时间登录

告警发生场景:员工在非上班时间登录系统,比如在下班时间 22:00-4:00 登录系统,这种情况比较危险,极有可能存在不法意图。

攻击方式:恶意员工或者黑客获取员工账号后,在非上班时间登录系统。检测思路:可以通过人工查看原始日志分析,或者通过日志审计工具解析原始日志,获取用户登录时间字段,命中非上班时间,并且能成功登录系统就触发非上班时间登录告警。

日志来源:系统登录日志

1)Linux 环境登录日志查看

Linux 用户登录日志存放在 /var/log/secure 中,以 CentOS 7 为例,查看 secure.log,看到登录日志样例如下:

May  8 23:47:09 localhost sshd[1657]: Accepted password for root from 192.168.114.1 port 57115 ssh2May  8 13:14:49 localhost sshd[51628]: Failed password for root from 192.168.114.1 port 49237 ssh2

人工分析:根据关键字“Accepted”判断登录成功,关键字“Failed”判断登录失败。根据日志信息里的时间判定是否在非上班时间,如果在非上班时间,且登录成功,则命中检测规则,需要进行告警提示用户当前存在该风险。如果在非上班时间,但登录失败的,则没有命中检测规则,不需要进行告警。

2)Windows 环境登录日志查看

以 Windows10 为例,在“事件查看器-安全”中查看 Windows10 登录日志,通过筛选关键字“审核成功”可查看登录成功的日志,筛选关键字“审核失败”可查看登录失败的日志。根据系统记录时间判定是否在非上班时间内。

1616147978_6054760a4c53acde17552.png!small?1616147978485

人工分析:过滤出审核成功的登录日志,根据日志信息里的时间判定是否在非上班时间,如果在非上班时间登录成功,则命中检测规则,需要进行告警提示用户当前存在该风险。通过人工分析日志,需要运维人员逐一登录目标资产收集原始日志,在海量日志场景中效率比较低,而且容易遗漏数据或者延误,无法在第一时间发现系统安全威胁,有巨大的安全隐患。检测思路可以复用到日志分析工具中作为告警规则,通过日志分析工具能够在海量日志场景中基于告警规则即刻识别安全威胁, 解决人工分析痛点。

工具分析:日志分析工具基于日志采集-日志解析-告警触发-报表展示的标准化流程,采集原始的 linux 和 Windows 登录日志,根据日志样例分别建立 linux 和 Windows 登录日志解析规则,将非结构化的日志信息中有价值的信息解析成关键字段,例如将事件类型解析为 login,登录结果解析为成功或失败,事件发生时间原样记录,定义非上班时间的时间范围,如果发生时间命中非上班时间范围,且登录结果成功,则实时触发告警展示,通过短信、微信、邮件等方式转给运维人员及时处理。

6. 堡垒机登录

告警发生场景:目前最主要的威胁来自内部人员,防火墙等安全设备只能防御来自外部的攻击,内部人员安全管理必须通过堡垒机实现,堡垒机用于运维安全审计,解决多点登录、分散管理、账号共享难以定位责任人、人为操作风险不可控等问题,一旦出现绕堡垒机登录行为,攻击者非法登录绕过了堡垒机的审计,存在严重的安全威胁。

攻击方式:攻击者用非堡垒机IP登录系统,绕过堡垒机审计。

检测思路:可以通过人工查看原始日志分析,或者通过日志审计工具解析原始日志,获取用户登录的源IP,登录结果是否成功,如果登录成功,且源IP不在堡垒机IP列表中,则触发绕堡垒机登录告警。日志来源:系统登录日志1)Linux 环境登录日志查看

Linux 用户登录日志存放在 /var/log/secure 中,查看 secure.log,看到登录日志样例如下:

May  8 09:47:09 localhost sshd[1657]: Accepted password for root from 192.168.114.1 port 57115 ssh2May  8 13:14:49 localhost sshd[51628]: Failed password for root from 192.168.114.1 port 49237 ssh2

人工分析:Accepted 代表登录成功,源 IP 192.168.114.1 不在堡垒机 IP 列表中,则属于绕堡垒机登录行为,触发告警。Failed 代表登录失败,可以忽略此条登录日志,不符合告警触发条件。

2)Windows 环境登录日志查看

例如,查看 Windows server 2012 服务器的登录日志,通过菜单“工具”-“事件管理器”-“Windows 日志”-“安全”可以发现登录日志,原始登录日志样例如下:

1616148000_6054762097fb10aa89af8.png!small?1616148000775

可以看到事件 ID 为 4624,结果为审核成功,代表登录成功。

点击“详细信息”,选择“XML”视图,可以看到详细的 Windows server 登录日志关键信息,包括登录类型为10,表示此次登录是远程桌面登录,非本地登录或文件共享登录。源IP为 192.168.1.162。

1616148007_60547627eec83d35a983b.png!small?1616148008102

人工分析:Windows server 登录日志审核成功的代表登录成功,通过过滤事件 ID 4624的登录日志,查看详细信息中找到源IP 192.168.1.162,发现该 IP 不在堡垒机 IP 列表中,则属于绕堡垒机登录行为,触发告警。

通过人工分析日志,需要运维人员逐一登录目标资产收集原始日志,尤其是 linux 和Windows 跨平台的日志无法统一处理,尤其比如 Windows server 登录日志想要看到源IP,还需要进一步点击详情,在海量日志场景中效率非常低。检测思路可以复用到日志分析工具中作为告警规则,通过日志分析工具能够在海量日志场景中基于告警规则即刻识别安全威胁,解决人工分析痛点。

工具分析:通过日志分析工具统一采集各种类型资产的登录日志,快速解析出关键信息:登录结果以及源IP,检测思路为登录成功,且源IP不在堡垒机IP列表中,命中规则即刻触发告警。基于告警可以生成报表展示,方便运维人员及领导实时查看绕行风险趋势,及时处置,避免风险扩大化。样例如下:

2020-05-20T17:39:25.486713+08:00 WIN-5GR4VO5INR0 Microsoft-Windows-Security-Auditing 492 - [seci-win-2008 Keywords="-9214364837600034816" EventType="AUDIT_SUCCESS" EventID="4624" ProviderGuid="{54849625-5478-4994-A5BA-3E3B0328C30D}" Version="1" Task="12544" OpcodeValue="0" RecordNumber="540" ThreadID="1472" Channel="Security" Category="登录" Opcode="信息" SubjectUserSid="S-1-5-18" SubjectUserName="WIN-5GR4VO5INR0$" SubjectDomainName="WORKGROUP" SubjectLogonId="0x3e7" TargetUserSid="S-1-5-21-1283914313-648295371-1762289952-500" TargetUserName="Administrator" TargetDomainName="WIN-5GR4VO5INR0" TargetLogonId="0x521844" LogonType="10" LogonProcessName="User " AuthenticationPackageName="Negotiate" WorkstationName="WIN-5GR4VO5INR0" LogonGuid="{00000000-0000-0000-0000-000000000000}" TransmittedServices="-" LmPackageName="-" KeyLength="0" ProcessName="C:\\Windows\\System32\\winlogon.exe" IpAddress="192.168.1.162" IpPort="0" ImpersonationLevel="%%1833" EventReceivedTime="2020-05-20 17:39:26" SourceModuleName="eventlog" SourceModuleType="im_msvistalog"] 事件发生时间=2020-05-20 17:39:25

7、密码猜测

告警发生场景:攻击者多次登录服务器,通过暴力破解密码、社工获取密码线索等方式猜测密码,登录失败多次后登录成功。攻击方式:攻击者通过暴力破解密码、社工获取密码线索等方式猜测密码多次。检测思路:查看某段时间的登录日志,多次连续登录失败,然后成功登录系统,表示密码猜测成功,触发密码猜测告警。日志来源:系统登录日志

1)Linux 环境登录日志查看

Linux 用户登录日志存放在 /var/log/secure中,以 CentOS 7 为例,查看 secure.log,看到登录日志样例如下:

1616148026_6054763a572e33c15c2a2.png!small?1616148026552

人工分析:发现在 2020-5-20 18:37,有连续登录失败日志,密码错误鉴权失败,在18:38 成功登录,密码猜测成功。

2)Windows 环境登录日志查看

以 Windows server 2012 为例,查看 Windows server 2012 服务器的登录日志,通过菜单“工具”-“事件管理器”-“Windows日志”-“安全”可以发现登录日志,原始登录日志样例如下:

1616148032_60547640e664313f16c99.png!small?1616148033160

人工分析:发现在2020-5-20 18:48出现连续4次登录失败(事件ID为4625),然后第5次登录成功(事件ID为4624),证明密码猜测成功。工具分析:通过日志分析工具统一采集各种类型资产的登录日志,解析出关键信息:事件类型是登录,结果。告警规则设定为多数据源时序关联告警,在一定时间内登录失败次数超过指定阈值后触发子告警,基于该子告警以及后面登录成功的日志作为多数据源时序关联告警的数据源,通过源IP作为关联字段,满足子告警中的源IP=登录成功日志中的源IP,即可触发密码猜测告警。

8.高危命令操作

告警发生场景:高危命令操作一般是比较危险的操作,如果攻击者经攻击成功,进入了系统,在这种情况下一般要做的事情是清理现场,删除日志增加一些配置等行为。如Linux高危命令rm-rf,一条命令就可以删除一个目录下所有文件,以及整个目录,这种操作是比较危险的操作。自定义高危命令,记录用户操作行为,当用户有相关定义高危命令操作时,就是一条违规操作。黑客或内部恶意人员通过高危命令恶意篡改或删除文件或者数据库表核心数据,造成数据被破坏,直接导致业务异常或瘫痪。

攻击方式:攻击者通过针对文件或者数据库的高危命令操作完成攻击,例如常用的rm、init、reboot、umount、kill、cp、mv、reset、DELETE、DROP_TABLE、INSERT、UPDATE等命令。

检测思路:通过查看主机或者数据库日志,发现用户操作执行的命令,匹配预定义的高危命令集,如命中则属于高危命令操作事件。

日志来源:主机日志或数据库日志

以 Oracle 数据库日志为例,查看 Oracle 数据库日志,样例如下:

1616148263_60547727f0157dd4db1d3.png!small?1616148264034

人工分析:通过Oracle原始日志发现,COMMAND=DELETE以及COMMAND=INSERT代表如上两条Oracle操作日志分别对应DELETE和INSERT操作,属于高危操作命令,极有可能威胁数据安全,需要及时预警处置。

工具分析:通过日志分析工具预定义高危操作命令集,通过原始日志解析出事件类型,如果是SELECT操作,属于正常操作,如果符合DELETE、DROP_TABLE、INSERT、UPDATE等高危命令集,则触发高危命令操作告警。

9. 敏感文件访问

告警发生场景:黑客或内部恶意人员通过访问数据库或者系统敏感文件,造成数据泄露。网站管理后台,数据库文件,备份文件等都是一些敏感文件,一般不允许对其进行操作。如Linux敏感文件 /etc/passwd 文件,记录所有用户的密码文件,一般是不允许对该文件做修改的。自定义敏感文件,记录用户操作行为,当用户有相关定义敏感文件操作时,就是一条违规操作。根据操作的文件是否是敏感文件,提取用户对文件的操作,若含有访问、修改权限、删除、转移、重命名等操作,则告警,敏感文件如.conf/.ini/.sys/.dll/ 数据库敏感表等。

攻击方式:攻击者通过提权访问敏感文件或数据库中敏感的表,对敏感文件或敏感表进行删除、修改或转移等攻击。

检测思路:根据操作的文件是否是敏感文件或者操作的数据库表是否为敏感表名进行检测。

日志来源:主机日志或数据库日志

以 Oracle 数据库日志为例,查看 Oracle 数据库日志,样例如下:

1616148226_605477021c71b79afe255.png!small?1616148226203

人工分析:通过 Oracle 原始日志发现,DATABASE_NAME=CRM主机1,TABLE_NAME=BS_INFO_TYPE_T 以及 TABLE_NAME=BT_ACT_SUBPROC,COMMAND=SELECT以及COMMAND=UPDATE 代表如上两条 Oracle 操作日志分别访问以及更新了数据库CRM主机1中的两张敏感表BS_INFO_TYPE_T及BT_ACT_SUBPROC,极有可能导致敏感数据外泄或篡改,需要及时预警处置。

工具分析:通过日志分析工具预定义敏感数据库及敏感表,通过原始日志解析出数据库名及数据库表名,同时对操作类型甄别(INSERT,UPDATE,DELETE,DROP_TABLE的操作作为重点专注对象),如果数据库名及数据库表名属于预定义的敏感数据库及敏感表集,则触发敏感文件访问告警。

三、总结

以上介绍了目前常用的账号安全威胁检测手段,包括:基于异常账号(黑名单账号,失效账号)的检测,基于账号异常行为(绕行登录,单账号多IP登录,非上班时间登录,高危操作和敏感文件访问)的检测等。

通过这些检测手段,再辅以工具,能及时发现账号的异常操作行为,从而避免安全威胁进一步扩大化,有效降低安全损失。

来源:freebuf.com 2021-03-19 18:05:28 by: secisland

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论