导语:FireEye发布了GeoLogonalyzer,这是一款开源工具,可以帮助企业根据地理位置和其他数据检测恶意登录。
长期以来用户一直需要从各地访问重要资源,例如虚拟专用网络(VPN),Web应用程序和邮件服务器。尽管从任何地方访问资源对于员工来说都是必不可少的,但攻击者经常利用被盗取的凭证来访问系统和数据。对于大量的远程访问连接,很难区分合法登录和恶意登录。
今天,我们发布GeoLogonalyzer,帮助企业分析日志,根据地理位置识别恶意登录;例如,在13:00从纽约连接到VPN的用户不太可能在5分钟后合法地从澳大利亚连接到VPN。
一旦远程认证活动在整个环境中基准化,分析人员就可以开始识别偏离业务需求和规范化模式的认证活动,例如:
1.从两个相距遥远的地点进行认证的用户账户,用户在时间差内无法实际走过该路线。
2.用户帐户通常从注册的城市,州或国家等一个物理位置的IP地址登录,但也有来自用户不可能实际定位的位置的登录。
3.用户从没有业务人员的地点登录,或者从企业没有业务联系的地点登录。
4.通常从一个源IP地址、子网或ASN登录的用户帐户,有少量来自不同源IP地址、子网或ASN的登录。
5.通常从家庭或工作网络登录的帐户,但也有使用云服务器托管提供商的IP地址进行登录。
6.从多个源主机名或多个VPN客户端登录的帐户。
通过处理包含时间戳,用户名和源IP地址的认证日志,GeoLogonalyzer可以帮助解决这些以及类似的情况。
GeoLogonalyzer可以从downloaded from our FireEye GitHub下载。
一、特色
IP地址可行性分析
对于记录源IP地址的远程认证日志,可以使用MaxMind的免费GeoIP数据库等数据计算每次登录的地理位置。通过附加信息(如时间戳和用户名),分析人员可以随时识别源位置的变化,以确定该用户是否可能在这两个物理位置之间移动执行合法登录。
例如,如果用户帐户Meghan在2017年11月24日10:00:00 UTC从纽约市登录,然后在2017年11月24日UTC时间20:00:00(10个小时后)从加利福尼亚州洛杉矶登录,即10小时内大约有2,450英里的变化。Meghan的登录源更改可以标准化为每小时245英里,通过商业航空旅行这是合理的。
如果第二个用户帐户Harry在2017年11月25日17:00:00从德克萨斯州达拉斯登录,然后在2017年11月25日19:00:00(两小时后)从澳大利亚悉尼登录,两个小时大约有8,500英里的变化。Harry的登录源变更可以标准化为每小时4,250英里,对于现代旅行技术而言,这基本上是不可能的。
通过关注登录源的变化,分析人员不必手动审查Harry在达拉斯登录前后可能从悉尼登录过的次数。
云主机提供商分析
攻击者明白,企业可能会阻止或寻找来自意外位置的连接。攻击者的一个解决方案是在另一个国家的受控服务器上建立代理,或者甚至通过诸如AWS,DigitalOcean或Choopa等公司在另一个国家托管的租用服务器。
幸运的是,Github用户“client9”以通用的格式整理了许多数据中心托管提供商。利用这些信息,我们可以尝试通过检测数据中心代理的地理位置来阻止攻击者。
二、使用
可用的日志源
GeoLogonalyzer旨在处理远程访问平台的日志,其中包括时间戳,用户名和源IP。适用的日志源包括但不限于:
1.VPN
2.电子邮件客户端或Web应用程序
3.远程桌面环境,如Citrix
4.面向Internet的应用程序
用法
GeoLogonalyzer内置-csv,接受CSV格式的输入,并考虑以下因素:
1.输入必须按时间戳排序。
2.输入时间戳必须全部位于同一时区,最好是UTC,以避免季节性变化,如夏令时。
3.输入格式必须符合以下CSV结构,这可能需要手动解析或重新格式化现有的日志:
YYYY-MM-DD HH:MM:SS,用户名,源IP,(可选的)源主机名,(可选的)VPN客户端详细信息
GeoLogonalyzer的代码注释包括添加定制日志格式支持的说明。由于从不同VPN制造商导出的各种VPN日志格式不统一,所以GeoLogonalyzer 1.0版不支持原始VPN服务器日志。
GeoLogonalyzer用法
输入示例:
图1表示了一个输入——VPNLogs.csv文件的例子,记录了Meghan和Harry两个用户帐户的八个身份验证事件。输入数据通常直接从应用程序管理控制台或SIEM的日志中导出。请注意,此示例数据集完全是为演示目的而创建的。
图1: GeoLogonalyzer 输入示例
Windows 版命令行示例:
GeoLogonalyzer.exe --csv VPNLogs.csv --output GeoLogonalyzedVPNLogs.csv
Python 脚本示例:
python GeoLogonalyzer.py --csv VPNLogs.csv --output GeoLogonalyzedVPNLogs.csv
输出示例:
图2展示了输出——GeoLogonalyzedVPNLogs.csv文件,该文件显示了来自认证源更改的相关数据(突出显示已被添加用于强调,并且为简洁起见,一些列已被删除):
图2: GeoLogonalyzer 输出示例
分析:
在图2的输出示例中,GeoLogonalyzer帮助识别Harry帐户登录的以下异常:
1.FAST – Harry在记录的时间段内先后从纽约和澳大利亚登录,这需要以每小时4,297英里的速度旅行。
2.DISTANCE – Harry从纽约到澳大利亚的8,990英里之旅可能不存在。
3.DCH – Harry从澳大利亚登录的源IP地址与数据中心托管提供商相关。
4.HOSTNAME和CLIENT – Harry使用不同的VPN客户端软件从不同的系统登录,这可能违反策略。
5.ASN – Harry的源IP地址不属于同一个ASN。使用ASN分析有助于减少检查具有属于同一提供商的不同源IP地址的登录。示例包括来自不同校园建筑的或住宅的IP地址。
手动分析数据也可能会发现异常情况,例如:
1.无业务发生的国家或地区,或没有员工所在的国家或地区。
2.预计不到的数据中心。
3.ASN的名称不是预期的,如大学。
4.不应该登录到服务的用户名。
5.未经批准的VPN客户端软件。
6.不属于环境的主机名,不符合标准命名约定或不属于关联用户。
尽管仅基于这些数据可能无法确定登录模式是否是恶意的,但分析人员可以使用GeoLogonalyzer通过其他调查方法来标记和调查潜在的可疑登录活动。
三、局限性
保留地址
任何RFC1918源IP地址(如192.168.X.X和10.X.X.X)都不会在MaxMind数据库中注册一个物理位置。默认情况下,GeoLogonalyzer将对任何保留的IP地址使用坐标(0,0)。如果需要,分析人员可以通过修改Python脚本中的RESERVED_IP_COORDINATES常量来手动编辑这些坐标。
将此常数设置为办公室位置的坐标可能会提供最准确的结果,但如果企业具有多个位置或其他点对点连接,则不可行。
GeoLogonalyzer还接受参数-skip_rfc1918,它将完全忽略任何RFC1918源IP地址并可能导致错过活动。
失败的登录以及注销数据
将失败的登录尝试和注销记录包含在日志源数据中以查看与所有VPN活动的源信息相关的异常也很有用。GeoLogonalyzer不会区分登录成功,登录尝试失败和住销事件。GeoLogonalyzer也不会检测来自多个源IP地址的重叠登录会话。
假阳性因子
请注意,使用VPN或其他隧道服务可能会产生误报。例如,用户可以在UTC时间08:00从其位于怀俄明州的主办公室访问应用程序,在08:30 UTC连接到位于格鲁吉亚的VPN服务,并在UTC时间09:00通过VPN服务再次访问该应用程序。GeoLogonalyzer会处理这个应用程序访问日志,并检测到该用户帐户需要大约每小时1,250英里的FAST旅行速度,这可能看起来是恶意的。建议建立合法认证模式的基准以了解误报。
依赖开源数据
GeoLogonalyzer依靠开源数据来确定云托管提供商。这些查找只与可用的开源数据一样精确。
四、防止远程访问滥用
没有任何一个单一的分析方法是完美的,以下建议可以帮助安全团队防止滥用远程访问平台并调查可疑的攻击。
1.识别并限制远程访问平台允许访问来自Internet的敏感信息,例如VPN服务器,暴露于RDP或SSH的系统,第三方应用程序(例如Citrix),Intranet站点和电子邮件基础结构。
2.实施多因素认证解决方案,为所有远程访问平台使用动态生成的一次性令牌。
3.确保记录每个识别的访问平台的远程访问认证日志,并将其转发到日志聚合实用程序,并保留至少一年。
4.根据标准或物理位置注册确定为远程访问用户合法的白名单IP地址范围。如果无法列入白名单,黑名单IP地址范围将注册到物理位置或云托管提供商,这些提供商绝不应对远程访问门户进行合法身份验证。
5.利用SIEM或GeoLogonalyzer.py对常规频率上的所有远程访问执行地理位置分析,以建立合法执行意外登录活动并识别新异常情况的帐户标准。调查异常情况可能需要联系相关用户帐户的所有者。 FireEye Helix分析GeoLogonalyzer使用的所有实时日志数据,甚至更多!