Security & Forensic

반응형

Windows 설치날짜 정보 확인 유의 사항

 

http://az4n6.blogspot.kr/2017/02/when-windows-lies.html

 

레지스트리의 설치 날짜는 윈도우 업데이트, 노트북 구매(미리 설치된 OS), 임의 수정 등으로 실제 설치/최초 사용 날짜와 다를 수 있습니다.운영체제 설치 날짜를 명확히 확인하려면 다음 3가지 정보를 상호 검증할 필요가 있습니다.

 

- 레지스트리 윈도우 설치 날짜

  HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion (TimeStamp 값으로 저장됨)

  ) HexDecimal -> 10진수 변환, 10진수 Timestamp 1333608934 Date로 변환

- 볼륨 포맷 날짜

 

- 계정 생성 날짜

C:\>dir /ah /s /tc ntuser.dat (OS 설치 드라이브에서 실행)

 C:\Users\chohb 디렉터리

     2012-04-05  오후 03:55        24,903,680 ntuser.dat

     

 C:\Users\Default 디렉터리

     2009-07-14  오전 11:34           262,144 NTUSER.DAT

 

비교

OS 설치 드라이브에서 C\User 폴더의 속성에서 생성일 확인

 

 

사용자(Users)\Default 폴더 생성일은 2012-04-05이다

 

WMIC

C:\>wmic useraccount get caption, name, Fullname, installdate, sid

Caption                 FullName  InstallDate  Name           SID

chohb-PC\Administrator                         Administrator  S-1-5-21-2610363949-2116855674-2356788

997-500

chohb-PC\chohb                                 chohb          S-1-5-21-2610363949-2116855674-2356788

997-1000

chohb-PC\Guest                                 Guest          S-1-5-21-2610363949-2116855674-2356788

997-501

 

WMIC User Account에는 InstallDate 값이 안나온다     

 

C:\>wmic os get installdate

InstallDate

20120405155534.000000+540

 

SystemInfo

C:\>systeminfo|findstr /i /c:"Original Install Date" /c:"원래 설치 날짜"

원래 설치 날짜:          2012-04-05, 오후 3:55:34                             

 

C:\>net user chohb : 계정생성일자 안나옴

사용자 이름                        chohb

전체 이름

설명

사용자 설명

국가 코드                          000 (시스템 기본값)

활성 계정                         

계정 만료 날짜                     기한 없음

 

마지막으로 암호 설정한 날짜        2015-08-17 오전 10:15:58

암호 만료 날짜                     기한 없음

암호를 바꿀 수 있는 날짜           2015-08-17 오전 10:15:58

암호 필요                          아니요

사용자가 암호를 바꿀 수도 있음     

 

허용된 워크스테이션                전체

로그온 스크립트

사용자 프로필

홈 디렉터리

최근 로그온                        2017-03-09 오전 11:50:09

 

허용된 로그온 시간                 전체

 

로컬 그룹 구성원                   *Administrators

                                   *ora_dba

글로벌 그룹 구성원                 *None

명령을 잘 실행했습니다.

 

반응형

반응형
lnk는 바로 가기(Shortcut) 와 비슷하면서도 다른 개념입니다. .lnk 바로 가기는 .lnk 라는 완전히 별개의 파일(해당 .lnk 의 실제 파일도 가지고 있는)이 따로 존재하고, 이러한 .lnk 포맷은 윈도우의 익스플로러 쉘에서 지정된 파일로 이동을 시켜주는 하나의 파일 형식일 뿐입니다. 하지만 지금 이야기하고 있는 링크에 대한 링크는 윈도우가 아닌 파일 시스템 차원에서 연결된 것이며, 이렇게 생성된 파일은 그 자체로 윈도우나 프로그램에서 개별적인 파일처럼 취급이 됩니다.
간단하게 C:\ShinB.txt 파일에 대한 C:\WinTT.lnk 바로 가기(Shortcut)를 만들고, 이러한 바로 가기(Shortcut)를 익스플로러에서 실행하면 C:\ShinB.txt 파일이 열립니다. 하지만 C:\ShinB.txt 에 링크로 연결된 C:\WinTT.txt 는 그대로 C:\WinTT.txt 로 열립니다. 그리고 하드 링크와 같이 최종적으로 서로 동일한 실제 파일로 연결되기 때문에 C:\ShinB.txt 나 C:\WinTT.txt 둘 중에 아무 파일로 접근하여 내용을 수정하면, 다른 파일에도 동시에 수정된 내용이 적용되는 것이다.

 

반응형

반응형

Windows 10에서의 ShellBags

Win10 1903 버전부터 Shellbags에는 nodeslot이라는 번호만 기록하고 데이터는 ShellbagMRU에 저장. 분석 시 두 개를 연계하여 분석해야 함

 

ShellBag/ShellBagMRU 포렌식적 의미

  • 존재하는 폴더의 삭제/덮어쓰기에 대한 증거 추적
  • Explorer 통한 폴더 접근에 대한 MAC 타임 추적
  • 사용자가 특정 폴더에 접근한 시간
  • Item TypeHidden Folder인 것이 존재한다면 Hidden Folder에 대한 존재 여부를 확인할 수 있다.
  • Network Drive External Device 폴더 접근 이력 조회(정보 유출 조사)

 현재 삭제된 디렉토리에 대한 열람 및 접근 등의 과거 행위도 남아 있으므로 포렌식 관점에서 중요한 의미가 있다.

  

셀백 분석에서 바탕화면(DeskTop Folder)은 폴더 내 파일까지 분석 및 조회가 된다. 또한 압축 파일도 분석된다.

압축 파일을 압축 해제할려면 어딘가 대상 폴더가 있어야 하기 때문으로 해석된다.

 

hive 위치

Windows XP

  • NTUSER.DAT\Software\Microsoft\Windows\Shell
  • NTUSER.DAT\Software\Microsoft\Windows\ShellNoRoam
  • NTUSER.DAT\Software\Microsoft\Windows\StreamMRU

 Windows 7

  • NTUSER.DAT\Software\Microsoft\Windows\Shell
  • UsrClass.dat\Local Settings\Software\Microsoft\Windows\Shell

  sbag util 조사하는 레지스트리 하위 값은 다음과 같다.

  • NTUSER.DAT\Software\Microsoft\Windows\Shell\BagMRU
  • NTUSER.DAT\Software\Microsoft\Windows\Shell\Bags
  • NTUSER.DAT\Software\Microsoft\Windows\ShellNoRoam\BagMRU
  • NTUSER.DAT\Software\Microsoft\Windows\ShellNoRoam\Bags
  • UsrClass.DAT\Local Settings\Software\Microsoft\Windows\Shell\BagMRU
  • UsrClass.DAT\Local Settings\Software\Microsoft\Windows\Shell\Bags
  • UsrClass.DAT\Local Settings\Software\Microsoft\Windows\ShellNoRoam\BagMRU
  • UsrClass.DAT\Local Settings\Software\Microsoft\Windows\ShellNoRoam\Bags 

 Shellbag item Type

분석 도구

demo 버전일 경우일부 데이터는 Full 내용으로 보이지 않을  있다시간변환에 대한 옵션이 없기 때문에

디폴트인 UTC 기준으로 데이터가 정리된다.

 

sbag64

hive 위치 확인

E:\InstallFiles\Forensic\sbag64.v.0.48.win>sbag64.exe -livehives

Valid license can't be found, contact info@tzworks.net to purchase a commercial  license.

 

실행

C:\>sbag64 -csv c:\users\administrator\ntuser.dat > c:\ntuser_sbag.csv

 

결과

Bag Number: "Bags" subkey 식별자

Registry key last write time:  폴더 최초 접근 시간 혹은 마지막으로 참조된 시간

Folder name

Full path

Embedded creation date / time: BagMRU Key값이 만들어진 시간

Embedded modify date / time: BagMRU Key값이 수정된 시간

Embedded access date / time: BagMRU Key값이 접근된 시간

 

Eric Zimmerman_s tools

ZIP 파일 외 일반 파일도 7개 분석됨 (?)

 

원격폴더 접속도 보인다 : "Nerwork Location" Shell Type값을 가진다.

 

shellbag_analyzer_cleaner

Type 보면 "Old/deleted Folder", "Folders on Network/External Device"도 있다. 또한 탐색기에서의 이동 뿐만 아니라 CMD CD명령으로 이동한 폴더도 표시된다

(2020-06-05) 테스트 결과 압축파일이나 바탕화면 내 파일 접근해도 안보임

원격폴더 접속도 보인다 : "Folders on Network / External Device" Shell Type값을 가진다.

 

Windows Shellbag forensics in Depth

Windows ShellBag Forensics in Depth.pdf
1.74MB

 

반응형

반응형

파일시스템-파일변경분석

 

분석을 위해 CMD 창을 띄워서 실행 결과를 표시할 때 만약 한글이 깨져 보인다면 CMD 출력 창을 UTF-8로 변경한다.

C:\Dropbox\DFIR\Window\SystemBasic\Tools\RegRipper>chcp -> 현재 코드페이지 

활성 코드 페이지: 949

C:\Dropbox\DFIR\Window\SystemBasic\Tools\RegRipper>chcp 65001  -> 코드페이지 변경

 

최근 변경 파일

F:\temp>dir /a-d/o-d/p %SystemRoot%\system32
2020-03-12  오전 08:48           491,218 perfh012.dat
2020-03-12  오전 08:48         1,652,058 PerfStringBackup.INI
2020-03-12  오전 08:42         2,942,912 argosregexpr.dll
2020-03-12  오전 08:42           598,392 FNTCACHE.DAT

......

 

특정일 이후 생성, 수정 파일

F:\temp>forfiles /s /d +2019-07-15 /c "cmd /c echo @isdir @path @fdate"
FALSE "F:\temp\AccessData_Registry_Viewer_2.0.0.exe" 2020-03-06
TRUE "F:\temp\activitiescache" 2020-03-06
FALSE "F:\temp\bcc-master.zip" 2019-12-31
FALSE "F:\temp\chromedriver_win32_80.0.3987.106.zip" 2020-02-19
TRUE "F:\temp\chromehistoryview" 2019-12-13
TRUE "F:\temp\cports-x64" 2019-12-19

......

 

F:\temp>forfiles /p c:\windows /s /d +2019-07-15 /c "cmd /c echo @isdir @path @fdate"
FALSE "c:\windows\AhnInst.log" 2020-01-31
TRUE "c:\windows\appcompat" 2020-02-18
TRUE "c:\windows\apppatch" 2020-03-11

......


특정일 이후 변경 파일 일괄 복사

C:\>xcopy c:\Windows\system32\*.* c:\temp\ /d:07-17-2019 [ or 2019-07-17 ? ]

 

PowerShell 이용

파일 생성 수정과 관련된 Property

PS c:\>Get-ChildItem -Path c:\down\lab -File -Recurse | Select-Object -Property name, *time | Format-Table -Autsize

 

오늘 생성된 파일

PS c:\>Get-ChildItem -Path c:\down\ -File -Recurse | Where-Object {$_.CreationTime -gt (Get-Date).Date}

 

7일동안 생성된 파일

PS c:\>Get-ChildItem -Path c:\down\ -File -Recurse | Where-Object {$_.CreationTime -gt (Get-Date).AddDays(-7)}

 

특정일 이후 생성된 파일

PS c:\>Get-ChildItem -Path c:\down\ -File -Recurse | Where-Object {$_.CreationTime -gt “03/01/2018”}

 

오늘 생성된 파일만 복사

PS c:\>Get-ChildItem -Path c:\down\ -File -Recurse | Where-Object {$_.CreationTime -gt (Get-Date).Date} | Copy-Item -Destination D:\DownloadedFromInternet\

 

최근 접근 파일

F:\temp>dir %AppData%\Microsoft\Windows\Recent
2020-03-02  오후 05:07               954 (180927)주간업무보고-해외사업부.docx.lnk
2020-03-09  오후 12:08             1,199 (승인)2019년_KPI성과관리_보안사업부문 보안연구센터_성과목표.xls.lnk
2020-03-11  오후 05:12               798 (최종제출)2020년 Biz Plan(매출목표)_보안사업부문_20191213.xlsx.lnk
......

 

참고로 최근 열어본 문서 레지스트리
HKU\%UserSID%\Software\Microsoft\Office\{Version}\{Program}\File MRU
HKLM\Software\HNC\Hwp\6.5\RecentFile
HKLM\Software\HNC\Hwp\{Version}\HwpFrame\RecentFile
HKU\%UserSID%\Software\Adobe\Acrobat Reader
HKU\%UserSID%\Software\Adobe\Adobe Acrobat
HKU\%UserSID%\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs
HKU\%UserSID%\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedMRU
HKU\%UserSID%\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidlMRU
HKU\%UserSID%\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU
HKU\%UserSID%\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSavePidlMRU

 

특정일 기간동안 접근된 파일

F:\temp>F:\tool\OS\AFind.exe c:\Windows /d 2-10 <- 10일전부터 2일전까지 접근된 파일
Searching...
c:\Windows\appcompat\appraiser\AltData
        APPRAISER_TelemetryBaseline_20H1.bin    12/03/2020  08:49:16
        APPRAISER_TelemetryBaseline_UNV.bin     12/03/2020  08:49:16
......

 

afind.exe는 시,분,초로도 찾을 수 있다. 또는 특정 폴더 모든 파일의 마지막 접근 시간을 알 수 있다.

 

숨긴 폴더

전체 숨긴 폴더

C:\>dir /ahd[/b]

2019-06-05  오후 02:40    <DIR>          $Recycle.Bin

2019-06-05  오후 01:39    <DIR>          $SysReset

2019-06-19  오전 11:33    <DIR>          $X

2019-06-05  오후 02:06    <JUNCTION>     Documents and Settings [C:\Users]

......


읽기
전용이 아닌 숨긴 폴더

C:\>dir /ahd-r

 

읽기 전용 숨긴 폴더

C:\>dir /ahdr

2018-05-31  오전 09:10    <DIR>          MSOCache

 

숨긴 파일

C:\>dir /ah-d /S

C:\Dropbox 디렉터리

2019-07-09  오후 07:57                35 .dropbox

2019-07-09  오후 07:57               258 desktop.ini

......

 

E:\Tools\SecurityToolSuite>HFind.exe c:\

Searching...

c:\$Recycle.Bin\S-1-5-18

  desktop.ini                           24/02/2019 17:57:03

......

 

ADS(Alternative Data Stream) 파일

ADSIdentifier 

Windows-based command-line application that identifies, and optionally removes, NTFS Alternate Data Streams

 

F:\temp>F:\tool\forensic\ADSIdentifier.exe /Folder:f:\

Create Date            Size in Bytes   Stream Name
--------------------------------------------------
오전 12:00:00                       116   f:\backup\네이버-기술자료-20191030-001.zip:Zone.Identifier
오전 12:00:00                        60   f:\backup\209번백업\WBS\.DS_Store:AFP_AfpInfo
오전 12:00:00                        60   f:\backup\209번백업\WBS\Systrace_WBS_180430.xlsx:RVContext
......

 

Alternatestreamview 

c:\>alternatestreamview64.exe /RunAsAdmin /FolderPath "c:\" /ScanSubfolders 1 /ShowZeroLengthStreams 1 /scsv "f:\temp\adslist.csv" -> 결과 파일 f:\temp\adslist.csv 확인

 

Streams64
Reveal NTFS alternate streams.
C:\>streams64.exe /nobanner -s f:\temp [ | find /i ":$DATA" |find /i /v "zone" ]
참고 : 파일로 Export 시 속도가 매우 느리다.

 

Dir CMD
C:\>dir c:\ /s /R | find ":$D" |find /i /v "Zone"

 

SFind(Stream find)

Alternate Data Stream Finder
C:\>SFind.exe c:\

 

lads(list ads)

C:\>lads.exe c:\ /S /A

 

다운로드된 파일
ADSIdentifier
Zone.Identifier도 ADS의 일종이며 Zone.Identifier 값이 3이면 인터넷으로부터 다운로드된 파일이라 할 수 있다.
Zone ID 값
1 - 로컬 인트라넷
2 - 신뢰할 수 있는 사이트(URLZONE_TRUSTED)
3 - 인터넷
4 - 제한된 사이트(URLZONE_UNTRUSTED)

 

C:\>ADSIdentifier.exe /Folder:c:\ [ /P ]

Dir CMD
C:\>dir C: /S /R | findstr /i /c:":$D" |findstr /i /c:"Zone.Identifier"

PowerShell
PS C:\> get-ChildItem c:\* -Recurse -ErrorAction SilentlyContinue | get-item -Stream Zone*
PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\BackUp\\1343034360262.jpg:Zone.Identifier
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\BackUp\
PSChildName   : 1343034360262.jpg:Zone.Identifier
PSProvider    : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName      : C:\BackUp\\1343034360262.jpg
Stream        : Zone.Identifier
Length        : 343
......

 

삭제 파일

F:\temp>dir /ad /s f:\ | findstr /i /c:"recy"

 

<참고>

https://secuworld.tistory.com/32?category=849780

 

프린트 출력 파일

EventLogs
참고

이벤트 뷰어 내 [응용 프로그램 및 서비스 로그] > [Microsoft] > [Windows] > [PrintService] > [Operational]에서

속성 창을 통해 로깅 사용이 활성화 되어 있어야 한다.

C:\>dir %windir%\System32\winevt\logs\*print*.evtx

2020-03-12  오후 02:06            69,632 Microsoft-Windows-PrintService%4Operational.evtx
......


F:\temp>wevtutil el | findstr /i /c:"print"
Microsoft-Windows-PrintService/Operational

......


F:\temp>wevtutil qe Microsoft-Windows-PrintService/Operational /f:text

F:\temp>wevtutil epl Microsoft-Windows-PrintService/Operational f:\test\printlist.evtx

F:\temp>LogParser.exe -i:evt "select TimeWritten, strings from f:\test\printlist.evtx"
TimeWritten         Strings
------------------- -----------------------------------------------------------------------------------
2020-03-12 14:10:18 3
2020-03-12 14:10:19 3
2020-03-12 14:10:20 3|us008PC|Samsung M262x 282x Series (USB001)|Samsung Universal Print Driver 3|1|0x0
2020-03-12 14:10:20 C:\Windows\system32\spool\PRINTERS\00003.SHD|-|0x0|0x5|104
2020-03-12 14:10:20 3|279864|1|0|0|0|600|1|3
2020-03-12 14:10:20 3|문서 인쇄|chohb|\\CHOHB|Samsung M262x 282x Series (USB001)|USB001|279864|1

......

 

제약조건

프린터된 파일 경로 및 이름을 알 수 없다. 프린터 시 생성되는 SHD와 SPL 파일을 분석하면 되겠지만 이 파일들은

프린터 출력이 종료되면 삭제되어 버린다.

 

Persistent file locations of interest
다음의 폴더에 실행 가능한 파일들이 생성되어 있는지 확인
%localappdata%\\.<4-9 file ext> 
%localappdata%\\.lnk 
%localappdata%\\.bat 
%appdata%\\.<4-9 file ext> 
%appdata%\\.lnk 
%appdata%\\.bat 
%appdata%\\.bat 
%SystemRoot%\ 
%appdata%\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\*.lnk 
%SystemRoot%\System32\\ 
%SystemRoot%\System32\tasks\ 
%SystemRoot%\\
C:\Users\[user]\appdata\roaming\[random] 
C:\Users\Public\* 

Unusual Exe etc

다음의 폴더에 실행 가능한 파일들이 생성되어 있는지 확인
dir /s /b %localappdata%\*.exe | findstr /e .exe 
dir /s /b %appdata%\*.exe | findstr /e .exe 
dir /s /b %localappdata%\*.dll | findstr /e .dll 
dir /s /b %appdata%\*.dll | findstr /e .dll 
dir /s /b %localappdata%\*.bat | findstr /e .bat 
dir /s /b "%appdata%\Microsoft\Windows\Start Menu\Programs\Startup\" | findstr /e .lnk 
dir /s /b "C:\Users\Public\" | findstr /e .exe 
dir /s /b "C:\Users\Public\" | findstr /e .lnk 
dir /s /b "C:\Users\Public\" | findstr /e .dll 
dir /s /b "C:\Users\Public\" | findstr /e .bat 

반응형

반응형

OS기본파일 디지털서명 검사

powershell
PS F:\temp> gci -path c:\windows -Recurse -File -include *.dll | select directory, name, fullname

PS F:\temp> Get-ChildItem -path $env:windir -Recurse -File -include *.dll | select fullname |  foreach-object { get-authenticodesignature $_.fullname } | Out-File "f:\Temp\WinFiles-SignCheck.txt" -Append


결과

sigcheck

Windows Directory 파일 서명 여부 확인

F:\temp>F:\tool\OS\Sigcheck\sigcheck64.exe -nobanner -s %windir%

F:\temp>F:\tool\OS\Sigcheck\sigcheck64.exe -nobanner -u -e -s %windir%

OS기본파일 무결성 검사

sfc

F:\temp>sfc /VERIFYONLY

 

반응형

반응형

장치드라이버 디지털서명 검사

 

sigverif

결과

서명안된 파일들의 hash값을 구하거나 파일명으로 VirusTotal등에서 악성코드 여부를 조회

 

driverquery

/si : Displays digital signature information for both signed and unsigned device drivers.
F:\temp>driverquery.exe /SI

powershell

F:\temp>powershell
PS F:\temp> Get-WmiObject -class win32_systemdriver | select InstallDate, pathname,  DisplayName

PS F:\temp> Get-WmiObject -class win32_systemdriver |  foreach-object { get-authenticodesignature $_.pathname }

WMI win32_systemdriver
F:\temp>wmic path win32_systemdriver get caption, pathname, installdate /format:table

signtool

SignTool is a command-line CryptoAPI tool that digitally-signs files, verifies signatures in files, and time stamps files.

F:\temp>F:\tool\OS\SignTool\signtool64.exe verify /pa C:\Windows\SysWOW64\vulkaninfo.exe
File: C:\Windows\SysWOW64\vulkaninfo.exe
Index  Algorithm  Timestamp
========================================
0      sha256     RFC3161
Successfully verified: C:\Windows\SysWOW64\vulkaninfo.exe

 

driversignature.bat

@echo off
if Exist driverquery_list.txt del driverquery_list.txt
wmic path win32_systemdriver get pathname > driverquery_list.txt
for /f "tokens=*" %%a in ('type driverquery_list.txt') do (
rem echo %%a
F:\tool\OS\SignTool\signtool64.exe verify /pa %%a
)
if Exist driverquery_list.txt del driverquery_list.txt

 

F:\temp>driversignature.bat

Successfully verified: C:\WINDOWS\system32\drivers\3ware.sys
File: C:\WINDOWS\system32\drivers\acpi.sys
Index  Algorithm  Timestamp
========================================
0      sha256     RFC3161

Successfully verified: C:\WINDOWS\system32\drivers\acpi.sys
File: C:\WINDOWS\system32\drivers\AcpiDev.sys
Index  Algorithm  Timestamp
========================================
SignTool Error: No signature found.

......

 

sigcheck

특정파일에 코드사인이 되어있는지 유무 판별을 해주는 유틸

F:\temp>F:\tool\OS\Sigcheck\sigcheck64.exe -i C:\Windows\SysWOW64\vulkaninfo.exe
c:\windows\syswow64\vulkaninfo.exe:
        Verified:       Signed
......

(이하 디지털서명 상세 정보 확인)

 

<참고>

sigcheck, signtool 등 MicroSoft Sysinternal 에 포함된 tool은 상업적 목적이나 용도로 사용되어서는 안된다.

반응형