본문 바로가기

교육 및 자격증/빅데이터 기반 보안로그분석[splunk]

EDR 구축 (osquery설치, sysmon 설치)

728x90

 

OSQUERY 설치 - Linux

 - EDR에 활용될 수 있는 다양한 로그를 남겨주는 프로그램[프로세스/파일/레지스트리 생성, 네트워크 연결 정보 등]

 

https://www.osquery.io/

 

osqueryi // osquery 실행

 

기본 쿼리 실습

  • 모든 사용자 정보 확인 - users
select * from users;

  • 모든 프로세스 정보 확인
select pid, path, name from processes;

  • /usr/sbin 경로에서 실행된 프로세스 정보만 확인
select pid, path, name from processes where path like '/usr/bin%';

  • ip 정보 확인
select * from interface_addresses;

  • 현재 로그인한 사용자 확인
select * from logged_in_users;

  • 현재 열려있는 포트정보 확인
select * from listening_ports;

  • 명령어 실행 기록 확인
shell_history;

 

osquery 로깅 설정

 

 - EDR을 구축하려면 명령어 입력없이 자동으로 값을 가져와야 하기 때문에 osqueryd를 사용

ex)

[

...

"listening_ports": {
    "query": "SELECT pid, port, processes.path, cmdline, cwd FROM listening_ports JOIN processes USING (pid) WHERE port!=0;", 
    "interval" : 10,

    "removed": false, ==> false면 기존에 없던 로그가 새로 생겼을 때 탐지를 함

...] => 쿼리 만들기

listening port를 조회해서 pid, port 등을 10초에 한 번씩 실행

 

쿼리 데몬 등록

var/log에 로그 생성 확인

 

sudo nc -l 55555 // 55555포트를 열면 log에서 해당 포트를 볼 수 있다

 

상기 로그를 splunk로 불러오기

splunkbase에서 add-on osquery 설치 후 conf설정하기

SPLUNK 연결 성공

index=main sourcetype="osquery:results" //conf에서 설정한 것처럼 나온 로그 확인

 

 

 - 다시 listening port를 열고 splunk에서 보면 잡히는 걸 확인

index=main sourcetype="osquery:results" name="listening_ports"

55555번 포트 실행

 

SYSMON 설치 - Window

 : EDR에 활용될 수 있는 다양한 로그를 남겨주는 프로그램

https://learn.microsoft.com/ko-kr/sysinternals/downloads/sysmon

https://github.com/SwiftOnSecurity/sysmon-config

config 파일은 탐지하는 항목, 탐지하지 않는 항목을 정리해놓은 설정파일이다

 

cmd 관리자 모드 > sysmon dir로 이동 > 아래 명령 입력 > 동의 > sysmon64 started. 뜨면 성공

 

C:\Windows\System32\winevt\Logs // 이 경로에 로그가 남는다

로그 생성은 설정했으니 로그 분석을 위해 slunk와 연결

 

SPLUNK와 연결하기

splunk 설정 > 데이터 전달 및 수신 > 데이터 수신 > 새로추가

 

포워더 --> splunk로 데이터가 이동

간단히 포워더는 데이터 송신.

포트만 정하면 끝.

9997이 열린 것을 확인

 

universial forwarder에서 sysmon 로그를 splunk로 보내기

 

universial forwarder 설치

https://www.splunk.com/en_us/download/universal-forwarder.html?locale=en_us

 

아이디 입력 > deployedment server는 아무것도 입력하지 말고 다음 > Reveiving indexer는 현재 splunk에 접속한 ip 입력[리눅스에서 ip:8000] , 포트는 9997 다음> 끝.

 

 - splunk에서 로그를 잡을 때 splunk에서 생성되는 로그들이 많이 잡힌다.

ProcessCreate에서 exclude로 splunk에서 생성하는 로그들은 제외하도록 설정

 

threatHunting

설정 >  검색, 보고서 및 경고 > 앱 : ThreatHunting

 

 - 각 항목은 마이터어택 지표에 따른 윈도우에서 악성행위를 탐지할 수 있는 쿼리 집합이다.

 - event_id가 1이거나 윈도우 감사로그 event_id가 4688일 때 pocess가 파워쉘일 때 rar.exe를 실행하면 악성코드가 데이터를 유출하는 것으로 판단

 

 - 스피어피싱 첨부파일

sysmon event_id가 13이며 레지스트리 키에 trustrecords가 들어가거나 키 path가 다음과 같을 때 스피어피싱 첨부파일을 연 것으로 판단

 

매크로 악성코드 제작 실습

워드 열기 > 파일 > 옵션 > 리본 사용자 지정 > 개발도구 체크 다음 > 매크로 열기 > AutoOpen으로 매크로 만들기[문서가 열릴 때마다 자동으로 실행하는 매크로] > 매크로 위치 설정(어디에 악성 매크로를 넣을지 정한다)

 - 간단한 계산기 프로그램을 여는 코드

 

 - 엑셀, 파워포은티 등 프로그램들이 파워쉘이나 cmd에서 실행되면 탐지하는 룰 적용

 - 의심 룰 splunk에서 잡힌 calc.exe

 

EDR 탐지룰 제작

  • Persistence - Office Application Startup(T1137)

(지속성)  : 오피스 프로그램이 시작될 때마다 특정 매크로 코드가 실행되도록 설정 가능

워드 열기 > 파일 > 옵션 > 리본 사용자 지정 > 개발도구 체크 다음 > 매크로 열기 > AutoOpen으로 매크로 만들기

ID:  T1137.001

워드와 엑셀을 각각 위치에 넣으면 명령어가 자동 실행한다.

Word Normal.dotm 위치:
C:\Users\<username>\AppData\Roaming\Microsoft\Templates\Normal.dotm

Excel Personal.xlsb 위치:
C:\Users\<username>\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSB

 

문서를 열때마다 코드가 자동으로 실행

 -C:\Users\\AppData\Roaming\Microsoft\Templates\Normal.dotm경로에 파일을 지우면 코드가 실행되지 않는다.

 

  • Persistence - CreateAccount(T1136)

  : 지속적인 공격을 수행하기 위해 새로운 계정 생성 가능[계정 생성 명령어 net user <username> <password> \add]

cmd에서 명령어를 치면 sysmon 설정에서 로그를 잡아내 splunk에서 확인할 수 있다.

 

참고

https://www.osquery.io/schema/5.9.1/

https://attack.mitre.org/techniques/T1137/001/