에이전트 시스템에서 관리자가 원하는 Artifact 정보를 수집합니다. Artifact 정보 수집을 위해 YAML 구문을 입력하여 원하는 정보를 수집할 수 있습니다.
참고
입력된 YAML 구문에 오류가 있는 경우, Artifact 수집을 실패하거나 수집 정보가 누락될 수 있습니다.
사용자가 원하는 Artifact 파일 수집을 위해서는 YAML 1.1 문법을 따라 구문을 작성해야 합니다. 다음은 YAML 구문을 이용한 간단한 예시와 실제 수집된 Artifact 정보입니다.
YAML 구문 입력 시 사용되는 YAML 1.1 문법에서는 AhnLab EAC definition 문법에 따라 작성되어야 합니다. 아래 예시에서 수집하는 정보는 다음과 같습니다.
classes: - class: Summary subclasses: - class: Files attributes: path: '%Profile%\Downloads' flags: [include_subdirectory] condition: os_version >= 6 - class: Tasks subclasses: - class: Tasks.Processes - class: Tasks.Modules - class: Tasks.Services - class: Hardware subclasses: - class: Hardware.Devices - class: Hardware.Processors - class: Hardware.Mainboard files: # SystemEventLog - paths: ['%System%\winevt\Logs\System.evtx'] condition: os_version >= 6 - paths: ['%System%\winevt\Logs\SysEvent.evt'] condition: os_version < 6 |
위 구문으로 수집된 Artifact 정보는 아래와 같습니다. 수집된 아래 정보는 대응 > AhnReport/Artifact 수집에서 확인할 수 있습니다.
AhnLab EAC definition file은 AhnLab EAC가 수집할 항목들을 정의한 파일이며 YAML 1.1 문법을 따릅니다. YAML 문법에 대한 자세한 내용은 YAML 공식 웹 사이트 또는 위키백과를 참조하십시오. 다음은 YAML 구문을 이용한 간단한 예시입니다.
AhnLab EAC 파일 수집을 위해 기본적으로 YAML 1.1 문법을 따릅니다.
참고
YAML 1.1 문법에 대한 내용은 아래 사이트를 참고하십시오.
- official web site, wikipedia
수집할 artifacts 목록으로 트리 구조로 수집되는데, 하나의 class가 하나의 트리 항목으로 생성됩니다. 수집된 내용은 압축된 결과 파일(AhnRpt.arpj)에 JSON 형식으로 저장됩니다.
추가로 수집할 파일 목록입니다.
AhnReport EAC에서 지원하는 Class들입니다.
Class name |
Description |
Summary |
시스템 요약 |
Class name |
Description |
Tasks.Processes |
실행된 프로세스 |
Tasks.Modules |
로드된 모듈 |
Tasks.Startup |
시작프로그램 |
Tasks.Services |
서비스 |
Tasks.Schedule_tasks |
예약 작업 |
Class name |
Description |
System.Shares |
공유 |
System.Certificates |
인증서 |
System.Problem_reports |
문제 보고서 |
System.Event_log.Application |
Windows 이벤트 로그 - 응용 프로그램 |
System.Event_log.Security |
Windows 이벤트 로그 – 보안 |
System.Event_log.System |
Windows 이벤트 로그 – 시스템 |
System.Event_log.Windows_Defender_Operational System.Event_log.Windows_Defender_WHC |
Windows 이벤트 로그 - Windows Defender |
Class name |
Description |
Network.Firewall 방화벽 |
방화벽 |
Network.Firewall.Firewall_rules |
방화벽 규칙 |
Network.Network_connections |
네트워크 연결 |
Network.IP_configuration |
IP Configuration |
Network.DNS_resolver_cache |
DNS resolover cache |
Network.Routing_table |
Routing table |
Network.ARP_cache |
ARP cache |
Network.Hosts |
Hosts |
Class name |
Description |
Hardware.Devices |
장치 |
Hardware.Processors |
프로세서 |
Hardware.Mainboard |
메인보드 |
Hardware.Drives |
드라이브 |
Hardware.Disks |
디스크 |
Hardware.Display |
디스플레이 |
Hardware.Display_adapters |
디스플레이 어댑터 |
Hardware.Printers |
프린터 |
Class name |
Description |
Programs |
설치된 프로그램 |
Programs.Updates |
업데이트 |
Programs.Update_history |
업데이트 기록 |
Programs.Program_Files |
Program files |
Class name |
Description |
Timeline |
행위 시간이 있는 artifacts를 시간 순으로 정리한 class |
Timeline에서 수집하는 artifacts 정보
Artifact |
Short name |
Date |
BAM |
bam |
마지막으로 실행된 시간 |
Chrome |
CrmH CrmC CrmD |
Chrome으로 접속한 시간 Chrome에서 마지막으로 cache를 사용한 시간 Chrome에서 다운로드를 시작한 시간 |
Firefox |
FfxH FfxD |
Firefox로 접속한 시간 Firefox에서 다운로드를 시작한 시간 |
Internet Explorer 10+
|
IEH IEC IED |
IE 10 이상으로 접속한 시간 IE 10 이상에서 마지막으로 cache를 사용한 시간 IE 10 이상에서 다운로드를 시작한 시간 |
Internet Explorer 5~9
|
IEH IEC |
IE 5~9로 접속한 시간 IE 5~9에서 마지막으로 cache를 사용한 시간 |
Jump lists |
JL |
파일을 열어본 시간 |
Java cache |
JavaC |
접속 시간 |
Microsoft Edge
|
EdgeH EdgeC EdgeD |
Microsoft Edge로 접속한 시간 Microsoft Edge에서 마지막으로 cache를 사용한 시간 Microsoft Edge에서 다운로드를 시작한 시간 |
Naver Whale
|
WhaleH WhaleC WhaleD |
Naver whale로 접속한 시간 Naver whale에서 마지막으로 cache를 사용한 시간 Naver whale에서 다운로드를 시작한 시간 |
Opera
|
OprH OprC OprD |
Opera로 접속한 시간 Opera에서 마지막으로 cache를 사용한 시간 Opera에서 다운로드를 시작한 시간 |
Prefetch |
Pf |
마지막으로 실행된 시간 |
Recent files |
RF |
마지막으로 파일을 사용한 시간 |
Recycle bin |
RB |
휴지통으로 보낸 시간 |
Swing |
SwingH SwingC SwingD |
Swing browser로 접속한 시간 Swing browser에서 마지막으로 cache를 사용한 시간 Swing browser에서 다운로드를 시작한 시간 |
UserAssist |
UA |
마지막으로 실행된 시간 |
WebCache |
H C D |
WebCache를 사용하는 App으로 Web page에 접속한 시간 WebCache를 사용하는 App에서 마지막으로 cache를 사용한 시간 WebCache를 사용하는 App에서 다운로드를 시작한 시간 |
Windows Timeline |
WT |
활동을 시작한 시간 |
원하는 정보를 지정하여 수집할 수 있습니다. 이 class들은 별도로 class attributes를 지정해야 합니다.
Class name |
Description |
지정한 폴더에 있는 파일 정보 |
|
지정한 registry 값 |
|
지정한 registry 키 |
|
지정한 Windows 이벤트 로그 |
|
WMI query |
class: Files attributes: path: '%Profile%\Downloads' flags: [include_subdirectory] |
참고
변수에 관한 상세 설명은 Variables 참조하십시오.
include_subdirectory: 하위 디렉토리를 포함하여 정보를 수집합니다.
class: Registry attributes: values: - {key: 'HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon', value: ' Shell'} - {key: 'HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows', value: 'Run'} |
Values: 수집할 registry value 목록입니다. Key, value 조합으로 구성되며, Key에 정의된 약어를 사용할 수 있습니다.
64bit Windows에서 32bit registry 정보를 수집하려면 key이름에 32를 붙입니다.(예: HKLM32) (32bit Windows에서는 이 설정이 무시됩니다.
Value 값이 없거나 빈 값이면, 해당 키의 기본값을 수집합니다.
수집할 레지스트리 키를 설정합니다.
class: Registry.Key attributes: key: 'HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders' flags: [include_subkey] |
레지스트리 키는 아래 약어를 사용할 수 있습니다.
Key |
Description |
HKLM |
HKEY_LOCAL_MACHINE |
HKCU |
HKEY_CURRENT_USER |
HKCR |
HKEY_CLASSES_ROOT |
HKU |
HKEY_USERS |
시스템 이벤트 로그를 수집합니다.
class: System.Event_log attributes: name: ApplicationEventLog channel: Application days: 7 |
아래는 Channel이름을 의미하며, 대표적인 Channel 이름은 다음과 같습니다.
Channel |
Description |
Application |
응용 프로그램 |
Security |
보안 |
System |
시스템 |
Query: (Optional). 특정 이벤트만 선별하여 수집할 때 사용합니다. Query 속성을 지정하면 from, to, days 속성과 기본 수집 기간이 무시됩니다. 특정 기간의 이벤트만 수집 필요 시, 수집 기간을 함께 지정해야 합니다. (Windows Vista/2008 이상의 운영 체제에만 적용)
XPATH 1.0 query 또는XML query를 사용할 수 있습니다. 상세 설명은 Consuming Events를 참고하십시오. 예) query: '*[System[(Level <= 3) and TimeCreated[timediff(@SystemTime) <= 86400000]]]'
From: (Optional). 수집 시작 시간을 지정합니다. To 속성을 지정하지 않으면, From 시간부터 마지막 로그까지 수집됩니다. Query 속성이 지정되면, 이 값은 무시됩니다.
'YYYY-MM-DDThh:mm:ssZ' 또는'YYYY-MM-DDThh:mm:ss.fffZ' 형식으로 작성합니다. 시간은 UTC. 예) 2018-11-19T01:30:00.123Z
To: (Optional). 수집 종료 시간을 지정합니다. From 속성을 지정하지 않으면, 처음부터 To 시간까지 수집되며, Query 속성이 지정되면, 이 값은 무시됩니다.
'YYYY-MM-DDThh:mm:ssZ' 또는'YYYY-MM-DDThh:mm:ss.fffZ' 형식으로 작성합니다. 시간은 UTC. 예) 2018-11-19T01:30:00.123Z
Days: (Optional). 수집 기간을 일 수로 지정합니다. Query, From, To 속성 중 하나라도 지정되면, 이 값은 무시되며, Query, From, To, Days 속성을 모두 지정하지 않으면, 기본 수집 기간인 지난 30일의 로그만 수집합니다.
예를 들어 7로 지정하면, 7일 전 현재 시각부터 마지막 로그까지 수집합니다. 이 속성이 0이면, 첫 로그부터 마지막 로그까지 모든 로그를 수집합니다.
WMI 관련 정보를 수집합니다.
class: WMI attributes: name: WMIComputerSystemProduct query: 'SELECT * FROM Win32_ComputerSystemProduct' |
조건 비교 시 사용하는 구문입니다.
연산자와 항목 사이에는 공백이 있어야 합니다. 예) os_version == 6.1
괄호로 우선 순위를 지정할 수 있습니다. 예) 64bit or (os_version >= 6 and os_version < 10)
공백이 있는 항목은 큰 따옴표("), 또는 작은 따옴표(')로 묶을 수 있습니다. 다만 YAML 문법에 유의해야 합니다. 예) 'os_version == "6.1"'
값의 이름은 관계 연산자 왼쪽에만 사용할 수 있습니다. "6.1 == os_version"은 잘못 사용한 예입니다. (not 제외)
조건에 사용하는 값은 다음과 같이 사용할 수 있습니다.
Name |
Type |
Description |
Example |
os_version |
Version string |
OS 버전 (<major>.<minor>) (*minor version은 생략 가능) |
os_version == 6.1 os_version >= 6 |
os_build_number |
Number |
OS build number |
os_build_number >= 10.0.17134 |
64bit |
Boolean |
64-bit OS이면 true |
64bit and os_version >= 6 |
system_type |
String |
x86, x64, arm64 중 하나 |
system_type == x64 |
server |
Boolean |
Server이면 true |
server and os_version >= 6 |
*Version string: 숫자와 구분 문자로 구성된 문자열로 숫자 부분끼리 비교합니다.
관계 연산자는 다음과 같이 사용할 수 있고, String을 비교할 때는 대소문자를 구분하지 않습니다.
Operator |
Description |
equals is == |
둘이 같으면, 참 |
notequals isnot != |
둘이 같지 않으면, 참 |
contains |
앞이 뒤 값을 포함하고 있으면, 참 |
notcontains |
앞이 뒤 값을 포함하고 있지 않으면, 참 |
> |
앞이 뒤보다 크면, 참 |
>= |
앞이 뒤보다 크거나 같으면, 참 |
< |
앞이 뒤보다 작으면, 참 |
<= |
앞이 뒤보다 작거나 같으면, 참 |
관계 연산자가 없으면, 아래와 동일하게 동작합니다.
Type |
Description |
String |
value != "" |
Version string |
value > 0.0.0.0 |
Number |
value != 0 |
Boolean |
value != false |
논리 연산자는 아래와 같이 사용할 수 있다.
Operator |
Description |
Example |
and && |
하나라도 거짓이면 거짓 |
64bit and os_version >= 6 |
or || |
하나라도 참이면 참 |
64bit or server |
not |
뒤가 거짓이면 참(!는 YAML 문법 상 맨 앞에 오면 충돌이 있어 지원하지 않음.) |
not 64bit and os_version >= 6 |
변수를 사용할 때는 다음과 같이 ‘%VariableName%’ 형식으로 사용할 수 있으며, Windows 환경 변수 사용 할 수 있습니다.예) %windir%\explorer.exe
Variable name |
Description |
ProgramData
|
Windows Vista 이상: %ProgramData% (%SystemDrive%\ProgramData) Windows XP, 2003: %ALLUSERSPROFILE%\Application Data |
ProgramFiles |
%ProgramFiles% (%SystemDrive%\Program Files) |
ProgramFilesX86
|
64bit Windows: %ProgramFiles(x86)% (%SystemDrive%\Program Files (x86)) 32bit Windows: %ProgramFiles% (%SystemDrive%\Program Files) |
ProgramFilesCommon |
%ProgramFiles%\Common Files |
ProgramFilesCommonX86
|
64bit Windows: %ProgramFiles(x86)%\Common Files 32bit Windows: %ProgramFiles%\Common Files |
Public |
Windows Vista+: %PUBLIC% (%SystemDrive%\Users\Public) Windows XP, 2003: %ALLUSERSPROFILE% |
System |
%windir%\System32 |
SystemX86
|
64bit Windows: %windir%\SysWOW64 32bit Windows: %windir%\System32 |
SystemDrive
|
%SystemDrive% Ex) C: |
Windows
|
%SystemRoot%, %windir% Ex) C:\Windows |
아래는 사용자 별로 다른 값을 사용하는 변수입니다.
별도로 사용자를 지정하지 않으면, 사용자 별 변수는 현재 사용자의 정보를 수집합니다.
'(CurrentUser)' prefix를 사용해 명시적으로 이를 지정할 수 있습니다. 예) %Profile(CurrentUser)%\Downloads
서비스처럼 SYSTEM 계정으로 수집하게 되면, SYSTEM 계정의 정보가 수집됩니다. SYSTEM 계정에서도 현재 로그인한 사용자의 정보를 수집하고자 할 때는 '(ActiveUser)' prefix를 사용합니다. 예) %Profile(ActiveUser)%\Downloads
Variable name |
Description |
LocalAppData
|
Windows Vista 이상: %LOCALAPPDATA% (%USERPROFILE%\AppData\Local) Windows XP, 2003: %USERPROFILE%\Local Settings\Application Data |
LocalAppDataLow |
Windows Vista 이상: %USERPROFILE%\AppData\LocalLow |
Profile
|
Windows Vista 이상: %USERPROFILE% (%SystemDrive%\Users\%USERNAME%) Windows XP, 2003: %USERPROFILE% (%SystemDrive%\Documents and Settings\%USERNAME%) |
RoamingAppData
|
Windows Vista 이상: %APPDATA% (%USERPROFILE%\AppData\Roaming) Windows XP, 2003: %APPDATA% (%USERPROFILE%\Application Data) |
SID |
String-format SID (security identifier) |
Temp |
%Temp% Ex) C:\Users\Username\AppData\Local\Temp |