原文链接:LEGITIMATE EXFILTRATION TOOLS : SUMMARY AND DETECTION FOR INCIDENT RESPONSE AND THREAT HUNTING
译者:知道创宇404实验室翻译组
在威胁事件响应中,黑客们越来越频繁地使用数据传输工具(包括用于将数据传输到SFTP服务器或直接传输到云端的工具),这些工具被攻击者广泛用于数据外泄,而数据泄露问题是勒索事件中很常见的问题。本文立足于常见的应用工具,对其进行详细的检测分析。
随着威胁形势的不断演变,黑客已经从加密数据模式转变为通过解密数据以提高赎金支付成功率的模式。这些演变内容包括在攻击中定期使用合法的管理工具1。在日常活动中,越来越常见的是在同一台机器上安装了不同的管理工具。因此,攻击者不再需要使用自己的工具来完成某些任务,而是通过使用已经存在机器上的工具来达到目的。
如前所述,管理工具的使用已被广泛讨论2。本文的目的是识别黑客系统上可能存在的某些同步和数据传输工具渗透的文件。
在本文中,我们将重点关注五种免费且易于获取的工具,这些工具可以在许多Windows平台上找到:WinSCP、FreeFileSync、GoodSync、Megatools和Rclone。我们将使用默认配置进行测试。
为了进行此项实验,使用了多种工具来监视系统的活动:文件系统、注册表、进程活动和常见的Windows工件。在Windows上应用了默认的日志记录。但是,为了反映我们在任务中通常遇到的情况,因此选择不启用Sysmon。
WinSCP 是一个 Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端,支持多种协议,包括FTPS、SCP、WebDAV和传输到AWS S3。该工具有便携版,可以在命令行上使用。在本文中,我们使用6.1.1版本。
以下元素可用于检测工具的存在、使用情况以及安装时间:
C:\Users\<username>\AppData\Local\Programs\WinSCP
或C:\Program Files\WinSCP
(如果为所有用户安装);NTUSER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\winscp3_is1
和NTUSER\SOFTWARE\Martin Prikryl
。如果所有用户安装软件,我们可以在软件配置单元中找到具有相同路径的相同密钥。默认情况下,该工具通过注册表hive NTUSER进行配置,它显示默认情况下已禁用日志记录。
尽管如此,还是有可能找到一些有趣的信息:
HKEY_CURRENT_USER\SOFTWARE\Martin Prikryl\WinSCP 2\Configuration\Interface\Commander\LocalPanel\
中,值为LastPath
;HKEY_CURRENT_USER\SOFTWARE\Martin Prikryl\WinSCP 2\Configuration\Interface\Commander\OtherLocalPanel with the value
LastPath ;
HKEY_CURRENT_USER\SOFTWARE\Martin Prikryl\WinSCP 2\Configuration\History\RemoteTarget
.除了该项的修改日期之外,注册表配置单元中没有传输日期的时间戳。
我们还测试了便携版本,发现注册表配置单元中没有任何信息。但是,在C:\Users<username>\AppData\Local\Temp
中创建了一个临时文件夹Temp*_WinSCP--Portable.zip
,其中包含一个WinSCP
配置文件。
因为黑客不太可能会这样做,所以默认配置不启用日志记录。然而,我们已经启用了日志记录,可以更好了解记录的项目类型。该工具提供两种日志记录格式:XML或文本,我们已经同时启用了两者。
在这种情况下,用户默认在临时目录C:\Users\<username>\AppData\Local\Temp
中生成两个文件,文件命名方式为username@remote_ip.extension
。在这两个文件中,我们可以找到:
以下是XML文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<session start="2023-08-14T16:42:38.298Z" name="[email protected]" xmlns="http://winscp.net/schema/session/1.0">
<upload>
<filename value="C:\Users\User2\Documents\Newtest\anssi-guide-mecanismes_crypto-2.04.pdf"/>
<destination value="/client_sftp/New2/anssi-guide-mecanismes_crypto-2.04.pdf"/>
<size value="601028"/>
<result success="true"/>
</upload>
<touch>
<filename value="/client_sftp/New2/anssi-guide-mecanismes_crypto-2.04.pdf"/>
<modification value="2023-08-14T16:38:53.000Z"/>
<result success="true"/>
</touch>
<upload>
<filename value="C:\Users\User2\Documents\Newtest\anssi-guide-recommandations_de_securite_relatives_a_tls-v1.2.pdf"/>
<destination value="/client_sftp/New2/anssi-guide-recommandations_de_securite_relatives_a_tls-v1.2.pdf"/>
<size value="491064"/>
<result success="true"/>
</upload>
<touch>
<filename value="/client_sftp/New2/anssi-guide-recommandations_de_securite_relatives_a_tls-v1.2.pdf"/>
<modification value="2023-08-14T16:38:33.000Z"/>
<result success="true"/>
</touch>
...
</session>
. 2023-08-14 18:42:41.423 Cached directory change via ".." to "/client_sftp".
. 2023-08-14 18:42:41.423 Getting current directory name.
. 2023-08-14 18:42:41.439 Directory content loaded from cache.
. 2023-08-14 18:42:55.700 Copying 4 files/directories to remote directory "/client_sftp/New2/" - total size: 1.981.467
...
. 2023-08-14 18:42:55.700 File: 'C:\Users\User2\Documents\Newtest\anssi-guide-mecanismes_crypto-2.04.pdf' [2023-08-14T16:38:53.298Z] [601028]
. 2023-08-14 18:42:55.700 Copying "C:\Users\User2\Documents\Newtest\anssi-guide-mecanismes_crypto-2.04.pdf" to remote directory started.
. 2023-08-14 18:42:55.700 Binary transfer mode selected.
. 2023-08-14 18:42:55.700 Checking existence of file.
....
. 2023-08-14 18:42:55.716 Transfer done: 'C:\Users\User2\Documents\Newtest\anssi-guide-mecanismes_crypto-2.04.pdf' => '/client_sftp/New2/anssi-guide-mecanismes_crypto-2.04.pdf' [601028]
. 2023-08-14 18:42:55.716 File: 'C:\Users\User2\Documents\Newtest\anssi-guide-recommandations_de_securite_relatives_a_tls-v1.2.pdf' [2023-08-14T16:38:33.513Z] [491064]
. 2023-08-14 18:42:55.716 Copying "C:\Users\User2\Documents\Newtest\anssi-guide-recommandations_de_securite_relatives_a_tls-v1.2.pdf" to remote directory started.
. 2023-08-14 18:42:55.716 Binary transfer mode selected.
. 2023-08-14 18:42:55.716 Checking existence of file.
...
. 2023-08-14 18:43:37.077 Closing connection.
. 2023-08-14 18:43:37.077 Sending special code: 1
. 2023-08-14 18:43:37.077 Session sent command exit status 0
. 2023-08-14 18:43:37.077 Main session channel closed
. 2023-08-14 18:43:37.077 All channels closed
用户的启动注册表配置单元包含几个有趣的信息:
HKEY_CURRENT_USER\SOFTWARE\Martin Prikryl\WinSCP 2\Configuration\LastFingerprints
中,每个主机都有一个条目,用于存储SSH密钥的指纹信息;HKEY_CURRENT_USER\SOFTWARE\Martin Prikryl\WinSCP 2\Configuration\CDCache
中,包含了用户名和远程地址的信息;此文详细介绍了从各种工具中提取会话的可能性,包括WinSCP。
Megatools是一组用于通过命令行访问Mega服务的免费开源程序。该工具适用于Windows和Linux。在本文中,我们使用版本1.11.1。
以下元素可用于检测工具的存在和使用时间:
\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant
包含了工具的位置;SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\<GUID>\Count\
可以检索到工具的位置和使用期间的信息:Batch Key Path Batch Value Name Program Name Run Counter Focus Count Focus Time Last Executed
ROOT\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\Count P:\Hfref\Hfre2\Qbphzragf\zrtngbbyf-1.11.1.20230212-jva64\zrtngbbyf.rkr C:\Users\User2\Documents\megatools-1.11.1.20230212-win64\megatools.exe 1 0 0d, 0h, 00m, 00s 2023-08-23 15:04:07.5370000
C:\Users\<username>\AppData\Local\Temp\
中存在修改时间为Megatoolss是一个命令行实用程序,有两种主要选项用于传输数据:
megatools put myfile
;megatools copy -l local_folder -r remote destination
.使用这两个命令,有3个选项来验证mega服务:
在所有情况下,命令行工具没有这些命令默认的日志记录。该工具不会生成其他用于识别外泄文件的工件。
Rclone是一个命令行程序,用于管理云存储上的文件。它是云供应商的web存储接口的替代品。超过70种云存储产品支持rclone,包括S3对象存储、企业和消费者文件存储服务以及标准传输协议。在本文中,我们使用版本v1.63.1。
以下元素可用于检测工具的存在和使用时间:
\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant
包含了工具的位置SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\<GUID>\Count\
,可以检索到工具的位置和使用期间的信息;该工具允许以两种不同的方式配置访问供应商进行数据传输:
rclone.exe --config config_file source:remote_destination ;
rclone.exe -l source provider:remote_destination
.在第二种情况下,供应商是以交互模式配置的。这将导致在C:\Users\<username>\AppData\Roaming\rclone\
\中会创建一个名为rclone.conf
的配置文件,其结构如下:
[Connexion name]
type = provider
access_token = <token>
该程序不会保存登录名和密码,而会设置连接名称、供应商和关联的访问令牌。根据供应商的不同,可能还会有其他可用的值,但在磁盘上不会存储额外的信息。我们还测试了GUI版本(web应用程序),也没有更多有趣的信息。
[Rclone_google]
type = drive
scope = drive
token = {"access_token":"ya29.a0AfB_byCvq4Pl54ELskIqN3ga5LSZ0jKMTrrms2y5Ov8Is4svdWt******","token_type":"Bearer","refresh_token":"1//**************L9IrhEjH14x6lH3P_dR9mHEyfDSPIotXQbM848aq2bsy4xxWKvRaM08o6sicot1AZ5VrrtQ","expiry":"2023-01-10T21:11:36.113261+02:00"}
team_drive =
[Rclone_uptobox]
type = uptobox
access_token = 8dcc17b6fb8a************
除了这些信息之外,因为命令行没有被记录,所以没有找到其他可以用来识别泄漏文件的工件。
GoodSyncc是一款供个人使用的免费的文件同步和备份软件。该工具适用于Windows、MacOs、Linux、Android和iOS,主要是一个桌面应用程序,但也提供了命令行版本。该工具支持多种传输类型:SFTP、云存储(Google Drive、OneDrive、AWS等)。
以下元素可用于检测工具的存在、使用情况以及确定安装时间:
C:\Program Files\Siber Systems\GoodSync
;SOFTWARE: Microsoft\Windows\CurrentVersion\Uninstall\{}
的最后修改日期。在我们的情况下{B26B00DA-2E5D-4CF2-83C5-911198C0F009}
;SOFTWARE\Siber Systems\GoodSync\Profiles
以确定GoodSync日志的位置以及使用该工具的用户,值类似于C:/Users/<username>/AppData/Local/GoodSync
;C:\Users\<username>\AppData\Local\GoodSync\
在安装时生成YYYYMMDD-HHmm
两个日志文件:InstallElev-YYYYMMDD-HHmm.log
和InstallLicense-YYYYMMDD-HHmm.log
GoodSync Server
的服务,具有System EventID 7045,并且其显示注册表键SYSTEM\CurrentControlSet\Services\GsServer
的修改日期。对于每次使用(或会话),GoodSync会在用户文件夹C:\Users\<username>\AppData\Local\GoodSync\。
生成一个日志文件GoodSync-YYYYMMDD-HHmm.log
,其文件名与用户文件夹中会话开始的日期和时间相匹配,这些文件包含许多有趣的信息:
2023-08-23 16:37:26 #2 ----- GoodSync ver 12.3.4.4 on Windows 10; 10.0.10586-2 64-bit-OS t=1 cd= started -----
2023-08-23 16:37:26 #2 Command Line:
2023-08-23 16:37:26 #2 Main command:
2023-08-23 16:37:26 #2 g_bElevated=0 g_bIsUserInAdminGroup=1 OsCompName=DESKTOP-0D3LUFB SysUser=User2 DomainUser=DESKTOP-0D3LUFB\User2
2023-08-23 16:37:26 #2 SibGetOsComputerIds: OsCompSerialA=S-1-5-21-3357941585-1708574553-3041823371
2023-08-23 16:37:26 #2 SibGetOsComputerIds: OsDiskSerial=QM00001 MainDiskDir=C:/Program Files/Siber Systems/GoodSync
2023-08-23 16:37:26 #2 SibGetNetCardMacAddr: consider type=1 ip_addr=192.168.122.184 gate=192.168.122.1 macaddr=525400b7cbbe descr=Intel(R) 82574L Gigabit Network Connection
2023-08-23 16:37:26 #2 SibGetNetCardMacAddr: return ip_addr=192.168.122.184 macaddr=525400b7cbbe
2023-08-23 16:37:26 #2 GsLoadBookmark: sBmkFilePath=C:/Users/User2/AppData/Local/GoodSync/GsAcct.tic conn=url=gstps://*********-outlook-com.goodsync userid=*********-outlook-com pass=... appkey= email=*********@outlook.com name=********* affid=
2023-08-23 16:37:26 #2 === GsGetCheckGsAccount: g_sGsUserIdA=*********-outlook-com g_sComputerIdA=desktop-0d3lufb
2023-08-23 16:37:26 #2 GsLoadBookmark: sBmkFilePath=C:/Users/User2/AppData/Local/GoodSync/LocalAcct.tic conn=url=gstps://-local-desktop-0d3lufb-user2.goodsync userid=-local-desktop-0d3lufb-user2 pass=... appkey= email= name= affid=
2023-08-23 16:37:29 #2 CheckLicenseViaGsAccount: Ret OK: UserId=*********-outlook-com m_bLicActive=0 trial-expires=2023-09-23 16:01:16 LicRowId=- m_tLicExpires=(null-time) m_tAccountCreated=2023-08-23 16:01:16 ServerMsg=
文件中的其余信息将取决于文件复制的位置。
GoodSync接口和提供
事实上,该工具允许使用不同的协议或云服务。在本文中,我们选择了SFTP和Google Drive。
对于每种类型的目标,都会有一个身份验证步骤和一个连接位置步骤,这将根据选项有所不同。
然后,对于传输的文件,我们将能够识别到:复制的日期和时间、使用的协议/云提供商、源文件的位置和名称、文件的目的地和文件大小。
2023-08-23 16:39:58 #23 [Gdrive] Copy New 'C:/Users/User2/Documents/Doc_gdrive/NIST.CSWP.04282021.pdf.pdf' -> 'gdrive://www.googleapis.com/GS_Sync/NIST.CSWP.04282021.pdf.pdf' (411,227)
2023-08-23 16:39:58 #22 [Gdrive] Copy New 'C:/Users/User2/Documents/Doc_gdrive/apon_cryptanalysis_of_ledacrypt_final-preprint.pdf.pdf' -> 'gdrive://www.googleapis.com/GS_Sync/apon_cryptanalysis_of_ledacrypt_final-preprint.pdf.pdf' (492,371)
2023-08-23 16:39:59 #24 [Gdrive] Copy New 'C:/Users/User2/Documents/Doc_gdrive/SMITH-TONE_ExtractingLinearEquations_ePRINT.pdf.pdf' -> 'gdrive://www.googleapis.com/GS_Sync/SMITH-TONE_ExtractingLinearEquations_ePRINT.pdf.pdf' (886,796)
2023-08-23 16:06:15 #19 [SFTP] > Copy New 'C:/Users/User2/Documents/Doc/NIST.AMS.500-1.pdf.pdf' -> 'sftp://192.168.122.99/client_sftp/GoodSync/NIST.AMS.500-1.pdf.pdf' (1,780,403)
2023-08-23 16:06:15 #19 [SFTP] > Copy New 'C:/Users/User2/Documents/Doc/NIST.CSWP.04162018.pdf' -> 'sftp://192.168.122.99/client_sftp/GoodSync/NIST.CSWP.04162018.pdf' (1,062,822)
2023-08-23 16:06:15 #19 [SFTP] > Copy New 'C:/Users/User2/Documents/Doc/NIST.CSWP.6.gre.pdf.pdf' -> 'sftp://192.168.122.99/client_sftp/GoodSync/NIST.CSWP.6.gre.pdf.pdf' (1,637,459)
我们创建了一个Velociraptor查来询Windows.Forensics.GoodSync,用于自动化事件响应和威胁猎杀任务中搜索外泄文件。
GoodSync-YYYYMMDD-HHmm.log文件:在数据传输之前,可以对远程位置执行多种类型的操作(创建文件夹、删除文件等)。
Tic文件:在C:\Users\<username>\AppData\Local\GoodSync\
文件夹中可以找到多个tic格式的文件,其中包括:
server-accounts.tic
:包含与远程目的地相关联的账户(云提供商的邮件地址和SFTP的登录账户);jobs-groups-options-YYYY-MMDD-HHmmSS.tic
:含与server-accounts类似的信息,但按会话分类;GsAcct.tic
:保存了GoodSync帐户以及经过哈希处理的密码。在Google Drive的情况下,我们可以注意到一个缓存文件夹GoogleDriveCache
和一个tic文件google-fs-cache.tic
,其中包含了经过哈希处理的Google帐户密码的版本。
FreeFileSync是一款免费的开源数据同步工具,适用于Windows、Linux和MacOs。该工具是高度灵活的桌面应用程序,具有命令行版本和便携式版本,可以使用Google Drive或SFTP进行同步。在本文中,我们测试了Windows上默认配置的桌面版本12.5。
以下要素可用于检测工具的存在、使用和确定安装时间:
C:\Program Files\FreeFileSync
的创建日期;SOFTWARE\WOW6432Node\FreeFileSync
和SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\FreeFileSync_is1
的最后修改日期;FreeFileSync.exe
和RealTimeSync.exe
安装时使用Microsoft-Windows-Shell-Core event id 28115;HostApplication=powershell.exe -inputformat none -outputformat none -NonInteractive -Command Add-MpPreference -ExclusionProcess 'C:\Program Files\FreeFileSync\Bin\*'
.对于每次使用(或会话),FreeFileSync都会生成html报告[Last session] YYYY-MM-DD HHmmSS.*.html
,该文件名与用户文件夹中会话开始的日期和时间相匹配C:\Users\\AppData\Roaming\FreeFileSync\Logs\
。这些文件包含许多有趣的信息:
Goole Drive示例:
<td>Items processed:</td>
<td><span>6</span> (9,64 MB)</td>
<td>Total time:</td>
<td><span>00:00:13</span></td>
<td>17:06:45</td>
<td>Synchronizing folder pair: Update <br>
C:\Users\User2\Documents\ANSSI<br>
gdrive:\*****@gmail.com\Nouvelle collection</td>
<td valign="top">17:07:29</td>
<td>Creating file gdrive:\*****@gmail.com\Nouvelle collection\anssi-guide-organiser-un-exercice-de-gestion-de-crise-cyber-v1.0.pdf</td>
<td>Items processed:</td>
<td><span>2</span> (4,06 MB)</td>
<td>Total time:</td>
<td><span>00:00:00</span></td>
<td>16:46:57</td>
<td>Synchronizing folder pair: Update ><br>
C:\Users\User2\Documents\ENISA<br>
sftp://[email protected]/client_sftp/freefilesync</td>
....
<td>16:47:02</td>
<td>Creating file sftp://[email protected]/client_sftp/freefilesync/Health Threat Landscape.pdf</td>
我们创建了一个Velociraptor查询Windows.Forensics.FreeFileSync,以自动化在我们的事件响应和威胁猎杀任务中搜索外泄文件。
文件夹C:\Users\<username>\AppData\Roaming\FreeFileSync\Logs\
还包含在某些无法传输数据时生成的错误报告YYYY-MM-DD HHmmSS中,*[Error].html
还附带了相关文件、时间戳和远程目标:
<tr>
<td>16:45:50</td>
<td>Creating file "sftp://[email protected]/client_sftp/freefilesync/Health Threat Landscape.pdf"</td>
</tr>
<tr>
<td>16:45:50</td>
<td>Cannot write file sftp://cl[email protected]/client_sftp/freefilesync/Health Threat Landscape-401f.ffs_tmp.<br>
SSH_FX_PERMISSION_DENIED: Failed opening remote file [libssh2_sftp_open]</td>
</tr>
文件夹C:\Users\<username>\AppData\Roaming\FreeFileSync\
包含三个有价值的xml文件:
GlobalSettings.xml
:包含FreeFileSync配置,包括日志位置、保留和格式(html默认纯文本以及最后同步的历史记录,其包含源文件夹、远程位置和关联帐户);LastRun.ffs_gui
:包含上次使用桌面应用程序执行的远程位置;LastRun.ffs_real
:包含每日执行历史记录(如果设置)。当攻击者使用合法的数据传输工具时,无论它是已经存在于系统中还是被下载,通常都可以识别其存在和利用:
在第一种情况下,生成的日志通常可用于识别被渗透的文件以及渗透日期。但是,由于这些工具的配置非常灵活,因此可以禁用日志记录。但在这种情况下,将无法识别泄漏的文件。
在第二种情况下,除非记录命令行执行和新进程的创建,否则没有工件可以用来识别潜在的外泄文件。我们强烈建议考虑实施此日志记录策略:https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/manage/component-updates/command-line-process-auditing
这篇文章为我们提供了一个机会,让我们可以创建一些vql,以自动化我们在Velociraptor调查和威胁猎杀任务中的一些研究。
参考链接:
[1] https://www.synacktiv.com/publications/legal-rats-a-comprehensive-…
[2]https://jsac.jpcert.or.jp/archive/2023/pdf/jsac2023 1_1_yama shige-nakat…
本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/3048/