Привет, я @Gamoverr, работаю аналитиком угроз в Angara Security. А теперь к делу!

Angara SOC спешит дополнить статью наших коллег из RedTeam по разбору методик дампа памяти процесса LSASS. Мы рассмотрим эту тему со стороны защиты и методик детектирования данной активности. С помощью каких инструментов выявлять нежелательный доступ к учетным данным, и как это использовать для оперативного реагирования.

Небольшой ликбез

Злоумышленники могут абузить особенности Local Security Authority Subsystem Service (LSASS), сдампив учетные данные для повышения привилегий, кражи данных или горизонтального перемещения по инфраструктуре. Все зависит от того, чью учетную запись удалось украсть: администратора домена, администратора бизнес-системы или обычного пользователя.

Процесс LSASS всегда так сладок для злоумышленников и является одной из их первых целей из-за огромного количества конфиденциальной информации, которую он хранит в памяти.

А хранится в нем следующее:

  • Зашифрованные пароли,

  • NT-хэши,

  • LM-хэши,

  • Билеты Kerberos

Доступ к данной информации можно получить, обладая привилегиями SEDebugPrivilege, обычно имеющимися у локального администратора. Это уже усложняет задачу атакующему.

Для обращения к памяти LSASS, как мы ранее с вами узнали, существует довольно-таки большое количество методов и инструментов, но, несмотря на это, можно выделить две большие подгруппы:

  • Встроенные инструменты (уже присутствующие в ОС Windows, это могут быть вполне легитимные процессы и тулзы);

  • Кастомные инструменты злоумышленников.

Бегло рассмотрим примеры таких инструментов из обеих подгрупп без детального разбора атаки с их помощью.

The Windows Task Manager (taskmgr.exe) — диспетчер задач позволяет осуществить дамп произвольного процесса, если он запущен в привилегированном режиме. Действие заключается в простом щелчке правой кнопкой мыши по нужному процессу и выбору пункта меню «Создать файл дампа».

Windows DLL Host (rundll32.exe) — rundll позволяет запустить встроенную библиотеку Windows comsvcs.dll, которая экспортирует функцию, называемую MiniDump. При вызове данной функции, злоумышленник может подать в качестве параметра PID процесса LSASS и создать его дамп памяти.

Преступники часто используют сторонние программы двойного назначения. Например, средства от Sysinternals: Procdump, Process Explorer.

К инструментам, созданными злоумышленниками, можно отнести:

  • Mimikatz

  • Cobalt Strike

  • Impacket

  • Metasploit

  • PowerSploit

  • Empire

  • Pwdump

  • Dumpert

  • Lazagne

  • nanodump

На данном этапе не будем углубляться, как работает каждый из инструментов или какую технику он использует. В дальнейшем при обзоре детектов, если они будут базироваться на той или иной особенности, то постараемся разобраться и в ней. 

Источники событий

Основным источником событий может служить коммерческий EDR, позволяющий отслеживать создание процессов, их командные строки, доступ к процессам, создание файлов. Или открытые решения, такие как Sysmon. Ну и, конечно, журнал Security ОС Windows для узкого круга детектов.

Ниже приведу пример конфигурации Sysmon для детектов, рассматриваемых в данной статье

<!-- Event ID 7 == ImageLoad. -->
<ImageLoad onmatch="include">
    <Rule groupRelation="and">
        <Image condition="end with">\lsass.exe</Image>
        <Signed condition="is">false</Signed>
    </Rule>
    <Rule name="Suspicious dbghelp, dbgcore load" groupRelation="and">
        <ImageLoaded condition="contains">\dbghelp.dll</ImageLoaded>
<ImageLoaded condition="contains">\dbgcore.dll</ImageLoaded>
<Image condition="end with">\msbuild.exe</Image>
<Image condition="end with">\cmd.exe</Image>
<Image condition="end with">\rundll32.exe</Image>
<Image condition="end with">\powershell.exe</Image>
<Image condition="end with">\word.exe</Image>
<Image condition="end with">\excel.exe</Image>
<Image condition="end with">\powerpnt.exe</Image>
<Image condition="end with">\outlook.exe</Image>
<Image condition="end with">\monitoringhost.exe</Image>
<Image condition="end with">\wmic.exe</Image>
<Image condition="end with">\bash.exe</Image>
<Image condition="end with">\wscript.exe</Image>
<Image condition="end with">\cscript.exe</Image>
<Image condition="end with">\mshta.exe</Image>
<Image condition="end with">\regsvr32.exe</Image>
<Image condition="end with">\schtasks.exe</Image>
<Image condition="end with">\dnx.exe</Image>
<Image condition="end with">\regsvcs.exe</Image>
<Image condition="end with">\sc.exe</Image>
<Image condition="end with">\scriptrunner.exe</Image>
    </Rule>
</ImageLoad>
<!-- Event ID 8 == CreateRemoteThread. -->
<CreateRemoteThread onmatch="include">
<Rule groupRelation="and">
<TargetImage condition="is">c:\windows\system32\lsass.exe</TargetImage>
</Rule>
</CreateRemoteThread>
<!-- Event ID 10 == ProcessAccess. -->
<ProcessAccess onmatch="include">
<CallTrace name="technique_id=T1003,technique_name=Credential Dumping" condition="contains">dbghelp.dll</CallTrace>
<CallTrace name="technique_id=T1003,technique_name=Credential Dumping" condition="contains">dbgcore.dll</CallTrace>
<Rule groupRelation="and">
<TargetImage name="technique_id=T1003,technique_name=Credential Dumping" condition="is">C:\Windows\system32\lsass.exe</TargetImage>
<GrantedAccess>0x1FFFFF</GrantedAccess>
</Rule>
<Rule groupRelation="and">
<TargetImage name="technique_id=T1003,technique_name=Credential Dumping" condition="is">C:\Windows\system32\lsass.exe</TargetImage>
<GrantedAccess>0x1F1FFF</GrantedAccess>
</Rule>
<Rule groupRelation="and">
<TargetImage name="technique_id=T1003,technique_name=Credential Dumping" condition="is">C:\Windows\system32\lsass.exe</TargetImage>
<GrantedAccess>0x1010</GrantedAccess>
</Rule>
<Rule groupRelation="and">
<TargetImage name="technique_id=T1003,technique_name=Credential Dumping" condition="is">C:\Windows\system32\lsass.exe</TargetImage>
<GrantedAccess>0x143A</GrantedAccess>
</Rule>
<Rule groupRelation="and">
<TargetImage name="technique_id=T1003,technique_name=Credential Dumping" condition="is">C:\Windows\system32\lsass.exe</TargetImage>
<GrantedAccess>0x1438</GrantedAccess>
</Rule>
<Rule groupRelation="and">
<TargetImage name="technique_id=T1003,technique_name=Credential Dumping" condition="is">C:\Windows\system32\lsass.exe</TargetImage>
<GrantedAccess>0x40</GrantedAccess>
</Rule>
<Rule groupRelation="and">
<TargetImage name="technique_id=T1003,technique_name=Credential Dumping" condition="is">C:\Windows\system32\lsass.exe</TargetImage>
<GrantedAccess>0x1418</GrantedAccess>
</Rule>
<Rule groupRelation="and">
<TargetImage name="technique_id=T1003,technique_name=Credential Dumping" condition="is">C:\Windows\system32\lsass.exe</TargetImage>
<GrantedAccess>0x1410</GrantedAccess>
</Rule>
<Rule groupRelation="and">
<TargetImage name="technique_id=T1003,technique_name=Credential Dumping" condition="is">C:\Windows\system32\lsass.exe</TargetImage>
<GrantedAccess>0x1010</GrantedAccess>
</Rule>
<Rule groupRelation="and">
<TargetImage name="technique_id=T1003,technique_name=Credential Dumping" condition="is">C:\Windows\system32\lsass.exe</TargetImage>
<GrantedAccess>0x13fff</GrantedAccess>
</Rule>
<Rule groupRelation="and">
<TargetImage name="technique_id=T1003,technique_name=Credential Dumping" condition="is">C:\Windows\system32\lsass.exe</TargetImage>
<GrantedAccess>0x705</GrantedAccess>
</Rule>
<Rule groupRelation="and">
<TargetImage name="technique_id=T1003,technique_name=Credential Dumping WinRM Mimikatz" condition="is">C:\Windows\system32\lsass.exe</TargetImage>
<SourceImage>C:\Windows\system32\wsmprovhost.exe</SourceImage>
</Rule>
</ProcessAccess>
<!-- Event ID 11 == FileCreate. -->
<FileCreate onmatch="include">
<TargetFilename condition="end with">.dmp</TargetFilename>
<TargetFilename condition="contains">lsass</TargetFilename>
</FileCreate>
</RuleGroup>
<!-- Event ID 12,13,14 == RegObject added/deleted, RegValue Set, RegObject Renamed. -->
<RegistryEvent onmatch="include"
<TargetObject condition="contains">\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages</TargetObject>
<TargetObject condition="contains">\SYSTEM\CurrentControlSet\Control\Lsa\OSConfig\Security Packages</TargetObject>
</RegistryEvent>
</RuleGroup>

Раз уже коснулись темы Sysmon, то начнем с него.

Сами детекты описаны с помощью синтаксиса проекта Sigma, по ссылке можно с ним ознакомиться.

Создание процессов (Sysmon EventID 1 или Windows Seсurity EventID 4688)

Есть несколько сценариев, которые позволяют использовать события создания процессов в обнаружении подозрительной активности процесса LSASS или над ним.

Процесс LSASS редко создает дочерние процессы в легитимных целях. Таким образом, отслеживая события создания процессов, где родительским является LSASS, можно выявить технику закрепления через изменение конфигурации LSA Password Filters, Security Packages или Authentication Packages:

logsource:
    category: process_create
    product: sysmon
detection:
    selection:
        ParentImage: 'C:\Windows\System32\lsass.exe'
        TerminalSessionId: '0'
        winlog.event_data.User:
- 'NT AUTHORITY/SYSTEM'
- 'NT AUTHORITY/СИСТЕМА'
    condition: selection
tags:
    - attack.t1068
    - attack.t1003.001
    - attack t1547.002 
    - attack t1547.005
    - attack t1547.008
    - attack t1556.002

Другой возможный вариант — анализ командных строк при запуске процессов. Это позволяет, например, выявлять специфичные ключи программ (Mimikatz, Pypykatz, CQTools, comsvcs.dll и rundll32 и т.д.)

Пример детекта для Pypykatz по ключевым словам:   

logsource:
    category: process_create
    product: sysmon
detection:
    selection_common:
        CommandLine|contains: 'pypykatz'
        CommandLine|contains: ' dcc2 -i'
        CommandLine|contains: ' gppass '
    selection_live:
        CommandLine|contains: ' live '
        CommandLine|contains:
            - ' lsa'
            - ' registry'
            - ' kerberos'
            - ' share'
            - ' session'
            - ' localgroup'
            - ' dpapi'
            - ' ldap'
            - ' smb'
            - ' process'
            - ' token'
            - ' users'
    selection_lsa:
        CommandLine|contains: ' lsa '
        CommandLine|contains:
            - ' minidump'
            - ' rekall'
    selection_registry:
        CommandLine|contains: ' registry '
        CommandLine|contains:
            - ' --sam'
            - ' --security'
            - ' --software'
    selection_kerberos:
        CommandLine|contains: ' kerberos '
        CommandLine|contains:
            - ' tgt'
            - ' tgs'
            - ' brute'
            - ' asreproast'
            - ' spnroast'
            - ' s4u'
            - ' keytab'
            - ' ccache'
            - ' kirbi'
    selection_dpapi:
        CommandLine|contains: ' dpapi '
        CommandLine|contains:
            - ' prekey'
            - ' minidump'
            - ' masterkey'
            - ' asreproast'
            - ' credential'
            - ' vcred'
            - ' vpol'
            - ' securestring'
            - ' blob'
    selection_ldap:
        CommandLine|contains: ' ldap '
        CommandLine|contains: ' ldap://'
    selection_smb:
        CommandLine|contains: ' smb '
        CommandLine|contains:
            - ' console'
            - ' lsassfile'
            - ' lsassdump'
            - ' regfile'
            - ' regdump'
            - ' dcsync'
            - ' secretdump'
    condition: selection_common or selection_live or selection_lsa or selection_registry or selection_kerberos or selection_dpapi or selection_ldap or selection_smb
tags:
    - attack.t1003
    - attack.t1098
    - attack t1552.001 
    - attack t1207
    - attack t1550.002
    - attack t1150.003
    - attack t1552.004
    - attack t1547.005
    - attack t1134.005      

Обнаружение использования утилиты mimikatz по ключевым словам:

logsource:
    category: process_create
    product: sysmon
detection:
    selection:
        CommandLine|contains:
            - 'mimikatz'
            - 'mimilib'
            - '.3 eo.oe'
            - 'eo.oe.kiwi'
            - 'privilege..debug'
            - 'sekurlsa..logonpasswords'
            - 'lsadump..sam'
            - 'mimidrv.sys'
            - ' p::d'
            - ' s::l'
            - ' rpc..server'
    condition: selection
tags:
    - attack.t1003
    - attack.t1098
    - attack t1552.001 
    - attack t1207
    - attack t1550.002
    - attack t1150.003
    - attack t1552.004
    - attack t1547.005
    - attack t1134.005

Ниже представлен набор детектов для разлиных утилит и средств, с помощью которых можно получить дамп учетных данных из различных источников, в том числе LSASS:

logsource:
    category: process_create
    product: sysmon
detection:
    selection_shadow:
        CommandLine|contains: 'shadowcopy'
        CommandLine|contains: 'create'
        Image|endswith:
            - '\powershell.exe'
            - '\powershell_ise.exe'
            - '\pwsh.exe'
    selection_vssadmin:
        Image|endswith: '\vssadmin.exe'
        CommandLine|contains: 'shadow'
        CommandLine|contains:
            - 'list'
            - 'create'
            - 'delete'
            - 'resize'
    selection_ntds_sam:
        CommandLine|contains:
            - '\windows\ntds\ntds.dit'
            - '\system32\config\sam'
            - '\system32\config\security'
            - '\system32\config\system'
    selection_mklink:
        CommandLine|contains: 'mklink'
        CommandLine|contains: 'HarddiskVolumeShadowCopy'
    selection_ntdsutil:
        Image|endswith: '\ntdsutil.exe'
        CommandLine|contains: 'ntds'
        CommandLine|contains: 'create'
        CommandLine|contains: 'full'
    selection_reg:
        CommandLine|contains: 'reg'
        CommandLine|contains: 
            - 'e\?port'
            - '\?ave'
        CommandLine|contains:
        - 'hk.m..y.tem'
        - 'hk.m..am'
        - 'hk.m..ecurity'
        - 'hkey_.oca._machine..y.tem'
        - 'hkey_.oca._machine..am'
        - 'hkey_.oca._machine..ecurity'
    selection_sqldumper:
        Image|endswith: '\SqlDumper.exe'
        CommandLine|contains: 'SqlDumper.exe* 0 *'
    selection_tttracer:
        Image|endswith: '\tttracer.exe'
        CommandLine|contains: ' -dumpFull*-attach '
    selection_1:
        CommandLine|contains: '-Target'
        CommandLine|contains: '-Hash'
        CommandLine|contains: '-Username'
        CommandLine|contains:
            - 'Invoke-TheHash'
            - 'Invoke-SMBEnum'
            - 'Invoke-WMIExec'
            - 'Invoke-SMBExec'
    selection_2:
        CommandLine|contains: 'Invoke-SMBClient'
        CommandLine|contains: '-Hash'
        CommandLine|contains: '-Username'
    selection_3:
        CommandLine|contains: 'crackmapexec'
        CommandLine|contains: '-H '
        CommandLine|contains: '-u '
    selection_4:
        CommandLine|contains: 'wmiexec'
        CommandLine|contains: '-hashes'
    selection_5:
        CommandLine|contains: 'psexec'
        CommandLine|contains: '-hashes'
    selection_6:
        CommandLine|contains: 'vaultcmd'
        CommandLine|contains: '/list'
    selection_7:
        CommandLine|contains: 'RdrLeakDiag'
        CommandLine|contains: '/fullmemdmp'
    selection_8:
        CommandLine|contains: 'diskshadow'
        CommandLine|contains: '/s '
    condition: selection_shadow or selection_vssadmin or selection_ntds_sam or selection_mklink or selection_ntdsutil or selection_reg or selection_sqldumper or selection_tttracer or selection_*
tags:
    - attack.t1003.001
    - attack.t1003.002
    - attack.t1003.003
    - attack.t1003.004
    - attack.t1003.005

Обнаружение признаков запуска бинарных файлов утилит CQTools. Данные утилиты могут использоваться злоумышленниками для извлечения и декодирования паролей ОС Windows. В состав также входят утилиты для генерации пейлода, сниффинга, спуффинга, кейлоггеры и т.д.

logsource:
	category: process_create
	product: sysmon
detection:
	selection_CL:
		CommandLine|contains:
			- 'cqtools'
			- '--samdump'
			- '--dccdump'
			- '--sam='
			- '--sec='
			- '--sys='
			- '--newmsdcc='
			- '--pass='
			- '--bootkey='
			- '--kdsrootkeyfile'
			- '--golden='
			- '--masterkeyfile='
			- '--exe='
	selection_PC:
		Image|endswith:
			- '\CQLsassSecretsDumper.exe'
			- '\CQCat.exe'
			- '\CQCreateProcessWithParent.exe'
			- '\CQDPAPIBlobDecrypter.exe'
			- '\CQDPAPIBlobSearcher.exe'
			- '\CQDPAPIEncDec.exe'
			- '\CQFindBin.exe'
			- '\CQHashesCalc.exe'
			- '\CQImpersonate.exe'
			- '\CQMasterKeyDecrypt.exe'
			- '\CQMasterKeyEncrypt.exe'
			- '\CQMSGDecode.exe'
			- '\CQRDCManDecrypter.exe'
			- '\CQRegKeyLastWriteTime.exe'
			- '\CQRegKeyLastWriteTime_32.exe'
			- '\CQRegTool.exe'
			- '\CQReverseShellGen.exe'
			- '\CQRunInAppContainer.exe'
			- '\CQSecretsDumper.exe'
			- '\CQSymbolInstaller.exe'
			- '\CQArpSpoof.exe'
			- '\CQDPAPIKeePassDBDecryptor.exe'
			- '\ETWKeylogger.exe'
			- '\CQHashDumpv2.exe'
			- '\PfxRegenerator.exe'
			- '\CQPrefetchParser.exe'
			- '\CQRdcache.exe'
			- '\CQWSLMonitor.exe'
	condition: selection_CL or selection_PC
tags:
	- attack.t1003
	- attack.t1040
	- attack.t1555.003

Использование встроенной в Windows библиотеки comsvcs.dll

logsource:
	category: process_create
	product: sysmon
detection:
	selection_CL:
		CommandLine|contains:
			- 'comsvcsMiniDumpfull'
			- 'comsvcsMiniDumpWfull'
	selection_PC:
		Image|endswith:
			- '\Windows\powershell.exe'
			- '\Windows\powershell_ise.exe'
			- '\Windows\pwsh.exe'
			- '\psexec.exe'
			- '\psexec64.exe'
			- '\Windows\cscript.exe'
			- '\Windows\wscript.exe'
			- '\Windows\mshta.exe'
			- '\Windows\regsvr32.exe'
			- '\Windows\wmic.exe'
			- '\Windows\certutil.exe'
			- '\Windows\rundll32.exe'
			- '\Windows\cmstp.exe'
			- '\Windows\msiexec.exe'
			- '\Windows\*\cmd.exe'
	condition: selection_CL or selection_PC
tags:
	- attack.t1059
	- attack.t1003.001
	- attack.t1218.011

Загрузка драйвера (Image loaded: Sysmon Event ID 6)

Позволяет детектировать загружаемые в систему драйверы. Что дает возможность отследить, например, загрузку собственного драйвера утилитой Mimikatz.

Mimikatz и использовать функции режима ядра через включенный в его состав драйвер Mimidrv. Через драйвер доступны некоторые функции Windows, которые нельзя вызывать из пользовательского режима, такие как изменение атрибутов запущенных процессов и непосредственное взаимодействие с другими загруженными драйверами.

logsource:
    category: driver_loaded 
    product: sysmon
detection:
    selection: 
        Signed: false
        ImageLoaded|contains: mimidrv
    condition: selection
tags:
    - attack.t1003

Загрузка модуля процесса (Image loaded: Sysmon Event ID 7)

Событие логирует загрузка модуля (например, DLL библиотеки) в определенный процесс. Данный функционал позволяет отследить злоупотребление DLL библиотеками для дампа учетных данных.

Например, можно детектировать загрузку ранее упомянутых библиотек dbghelp/dbgcore DLL нетипичными процессами:

logsource:
  category: image_load
  product: sysmon
detection:
  selection:
    ImageLoaded|endswith:
      - '\dbghelp.dll'
      - '\dbgcore.dll'
    Image|endswith:
      - '\msbuild.exe'
      - '\cmd.exe' 
      - '\rundll32.exe'
      - '\word.exe'
      - '\excel.exe'
      - '\powerpnt.exe'
      - '\outlook.exe'
      - '\monitoringhost.exe'
      - '\wmic.exe'
      - '\bash.exe'
      - '\wscript.exe'
      - '\cscript.exe'
      - '\mshta.exe'
      - '\schtasks.exe'
      - '\dnx.exe'
      - '\regsvcs.exe'
      - '\sc.exe'
      - '\scriptrunner.exe'
  condition: selection
tags:
    - attack.t1003.001
    - attack.t1059

Или загрузка любой не подписанной библиотеки LSASS

logsource: 
  category: image_load 
  product: sysmon
detection:
  unsigned_dll: 
    Signed: 'FALSE'
    Image|endswith: '\lsass.exe'
  condition: unsigned_dll
tags:
    - attack.t1003
    - attack.t1059

Создание потока (CreateRemoteThread: Sysmon Event ID 8)

Событие CreateRemoteThread определяет, когда процесс создает поток в другом процессе. Этот метод используется вредоносными программами для внедрения кода и скрытия в других процессах.

Данным образом можно отследить, когда вредоносный процесс запускает поток в контексте lsass.exe (SamSs-Service) и выгружает запрошенные учетные данные из этого потока.

logsource: 
  category: create_remote_thread 
  product: sysmon
detection:
  selection:
    TargetImage|endswith: '\lsass.exe'
  condition: selection
tags:
    - attack.t1003

Доступ к памяти процесса (Process creation: Sysmon Event ID 10)

Cобытия доступа к процессу предлагают одно из лучших средств для обнаружения злоупотребления доступа к памяти LSASS. Но в тоже время достаточно сложно отсеять легитимные события, так как большое количество процессов имеют вполне себе законные причины для доступа к памяти LSASS. В правиле собраны наиболее подозрительные флаги, которые были замечены при обкатке тулзов для дампа памяти (Mimikatz, pypykatz, nanodump, lazagne, и т.д.). Также оно позволяет обнаружить использование таких безобидных средств, как Task Manager, procdump, Process Monitor, Process Hacker.

logsource:
    category: process_access
    product: sysmon
detection:
    selection_1:
        GrantedAccess:         
        - 0x1FFFFF
        - 0x1F1FFF
        - 0x1438
        - 0x143a
        - 0x40
        - 0x1418
        - 0x1410
        - 0x1010
        - 0x13fff
        - 0x705
    selection_2:
        CallTrace|Contains: 'dbghelp'
        CallTrace|Contains: 'dbgcore'
    selection_3:
        TargetImage: 'C:\Windows\system32\lsass.exe'
    condition: selection_3 and (selection_1 or selection_2)
tags:
    - attack.t1003

Или, например, с помощью данного события можно «отлавливать» факты использования злоумышленником Mimikatz через WinRM:

logsource:
    category: process_access
    product: sysmon
detection:
    selection:
        TargetImage|endswith: '\lsass.exe'
        SourceImage: 'C:\Windows\system32\wsmprovhost.exe'
    condition: selection
tags:
    - attack.t1003
    - attack.t1021.006

Создание файла (FileCreate: Sysmon Event ID 11)

Не секрет, что при обращении вредоносного ПО к процессу LSASS.exe зачастую создается образ дампа его памяти на жестком диске — для последующей передачи и создания так называемого offline взлома паролей. Можно этим воспользоваться и попробовать отыскивать события создания файлов с 'lsass' в названии или с расширением dmp.

logsource: 
  category: file_create 
  product: sysmon
detection:
  selection:
    TargetFileName|endswith: 'lsass'
    TargetFileName|endswith: '.dmp'
  condition: selection
tags:
    - attack.t1003

События реестра  (RegistryEvent (Object create and delete, Value Set, Key and Value Rename): Sysmon Event ID 12&13&14)

Злоумышленники могут настроить выполнение вредоносного кода при каждой загрузке системы или при вызове API-функции AddSecurityPackage. Это происходит с помощью добавления в конфигурацию Local Security Authority (LSA) фиктивного провайдера поддержки безопасности — Security Support Provider (SSP). SSP — программные модули (DLL), содержащие одну или несколько схем аутентификации и криптографии, которые загружаются в процесс LSASS при запуске системы. DLL-библиотеки SPP имеют доступ к зашифрованным и открытым текстовым паролям, которые хранятся в Windows.

Проект Mimikatz предоставляет файл DLL (mimilib.dll), который можно поместить в то же место, что и процесс LSASS (System32), чтобы получить учетные данные в виде plin text для любого пользователя, который приобретает доступ к скомпрометированному хосту.

Отследить добавление фиктивного провайдера поддержки безопасности можно следующим образом:

logsource: 
  category: registry 
  product: sysmon
detection:
  selection:
    TargetObject|contains: '\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages'
    TargetObject|contains: '\SYSTEM\CurrentControlSet\Control\Lsa\OSConfig\Security Packages'
  condition: selection
tags:
    - attack.t1547.005

По PID процесса можно отследить командную строку процесса и оценить, что именно добавлялось в реестр:

Ну и напоследок рассмотрим, как можно детектировать манипуляции злоумышленника над LSASS с помощью событий журналов безопасности OC Windows.

Был запрошен дескриптор к объекту (Windows Seсurity EventID 4656)

Данное событие по своей сути аналогично Event ID 10 от sysmon. И позволяет отследить с какими правами был запрошен доступ к объекту.

logsource: 
  category: process_access 
  product: windows
detection:
  selection_1:
    ObjectName|endswith: '\lsass.exe'
  selection_2:
    AccessMasks:   
    - '0x40'
    - '0x1400'
    - '0x1000'
    - '0x100000'
    - '0x1410'
    - '0x1010'
    - '0x1438'
    - '0x143a'
    - '0x1418'
    - '0x1f0fff'
    - '0x1f1fff'
    - '0x1f2fff'
    - '0x1f3fff'
  condition: selection_1 and selection_2
tags:
    - attack.t1003

Сервис был установлен в систему (Windows Security EventID 4697 и Windows System EventID 7045)

Множество вредоносного ПО при закреплении, повышении или расширении своего функционала на зараженной машине создают сервисы. Например, нами всеми любимый mimikatz создает сервис с именем "mimidrv" и с абсолютным путем до драйвера "mimidrv.sys".

logsource: 
  category: service_created 
  product: windows
detection:
  selection_7045:
    event_id: '7045' 
    ImagePath|contains:   
    - fgexec
    - dumpsvc
    - cachedump
    - mimidrv
    - gsecdump
    - servpw
    - fgexec
    - pwdump
    - wceservice
    - wceservice
    - mimikatz 
  selection_4697:
    event_id: '4697' 
    ServiceName|contains:   
    - fgexec
    - dumpsvc
    - cachedump
    - mimidrv
    - gsecdump
    - servpw
    - fgexec
    - pwdump
    - wceservice
    - wceservice
    - mimikatz   
    ServiceFileName|contains:
    - fgexec
    - dumpsvc
    - cachedump
    - mimidrv
    - gsecdump
    - servpw
    - fgexec
    - pwdump
    - wceservice
    - wceservice
    - mimikatz
  condition: selection_1 and selection_2
tags:
    - attack.t1003.001
    - attack.t1003.002
    - attack.t1003.003
    - attack.t1003.004
    - attack.t1003.005
    - attcak.t1569.002

Объект общего доступа сети был проверен, чтобы увидеть, может ли клиент получить желаемый доступ (Windows Security EventID 5145)

При ранее упомянутом «оффлайн дампе» злоумышленнику надо как-то будет передать дамп памяти со скомпрометированной машины. Тут нам и может помочь событие проверки объекта общего доступа.

logsource:
	category: network_share
	product: windows
detection:
	selection:
		event_id: '5154'
		RelativeTargetName|contains:
		- mimidrv
		- lsass
		- minidump
		- hiberfil
		- sqldmpr
		- \system32\config\sam
		- \ntds\ntds.dit
		- \system32\config\security
	condition: selection
tags:
- attack.t1003

В данной статье мы попытались рассмотреть большинство известных методов обнаружения доступа к учетным данным, хранящимся в lsass. Есть, конечно, другие методы и способы обнаружения, но они требуют немного иного инструментария, здесь же хотелось сосредоточиться на базовом и свободно доступном ПО (Sysmon и события журналов ОС Windows). Надеемся, что данный обзор был полезен и вам удалось почерпнуть новую информацию. До связи!

Комментарии (4)


  1. snovvcrash
    28.07.2022 17:50
    +1

    Я в домике ????


  1. evros
    28.07.2022 21:46

    Ждём статьи по обход smb signing, ldap signing and bind, smb encrypt; disable netbios and mdns and llmnr ииииии RunAsPPL. Но только по честному, без сферический коней в вакууме)

    Хоть это был и стëб, но на самом деле интересуют методики обхода и защиты (в рамках домена).

    Спасибо!


  1. turbohard
    29.07.2022 09:35

    Хай комрадс! А почему бы не юзать 4663 (получен доступ) вместо 4656 (запрошен дескриптор)? Ведь 4656 регается даже когда дескриптор запрошен, но не использован (например, работа Outlook в фоне). И 4656 выдаёт в несколько раз больше событий, чем 4663. В среднем, за месяц в типовой ИТ-структуре у 4656 - 10к событий, а у 4663 - 2к событий. К тому же, UltimateSecurity ссылается, что Microsoft рекомендует юзать 4663.


    1. Gamoverr Автор
      29.07.2022 10:04
      +1

      Хай комрад! Тут нет никакого "специального злого умысла", просто по какой-то причине я забыл добавить данный детект. Используем оба Event ID одновременно в работе. Зачастую в инфраструктурах нет одного из этих событий или вообще нет ни одного из них. Поэтому, Вы абсолютно правы, про 4663 забывать нельзя! И он действительно приоритетнее, если выбирать из двух.
      По поводу количества событий, то лучше отфильтровать не нужное (например, в том же самом winlogbeat убрать outlook, adobe, доверенные директории и т.д.) и тогда особо большой разницы в объеме хранимых данных не будет.