작은 메모장
프로세스 이상징후 분석 (시나리오 2) 본문
동일하게 KISA GYM으로부터 제공받아 실습을 진행하였다.
시나리오 1과 동일하게, imageInfo를 추출한 후, pslist와 pstree, dlllist, 그리고 procdump로 프로세스 이미지를 덤프 뜬다.
정보를 전부 습득했으니, 이제 분석을 시작한다.
처음으로 분석을 시도할 곳은 dlllist 파일이다.
시나리오 1과 동일하게, windows 폴더, programs files 폴더, systemroot를 제외한 위치의 정보를 가져오게 한다.
정상적인 위치가 아닌 이상한 위치에 설치되어 실행된 프로세스를 정보를 출력하라는 것이다.
grep -i "command line" dlllist.txt | grep -v -i "c:\\windows" | grep -v -i "c:\\program files" | grep -v -i "systemroot" |
감지된 프로그램은 총 5개로, 상단의 3개는 윈도우의 기본 빌트인 프로그램, 가장 하단의 프로그램은 메모리 덤프를 할 때 사용한 프로그램이다.
문제는, 4번째 프로그램인 C:\Users\admin\AppData\Local\Temp\0.9981548333304334.exe는 admin이라는 사용자의 임시 폴더에서 프로그램이 실행되었다.
어플리케이션 임시 디렉토리라는 일반적이지 않은 폴더에서 프로그램이 실행된 것이다.
결과적으로, 경로 정보에서는 C:\Users\admin\AppData\Local\Temp\0.9981548333304334.exe 프로그램이 의심되었다.
두 번째로, dlllist 파일에서 파라미터를 기준으로 한번 더 분석한다.
실행되어있는, 혹은 실행될 프로세스의 호출된 파라미터를 분석하여 비정상적으로 호출된 프로세스를 분석하는 것이다.
dlllist의 command line에서, svchost 프로세스의 파라미터를 분석해본다.
grep -i "command line" dlllist.txt | findstr svchost.exe |
해당 명령어를 통해 svchost의 파라미터 목록을 전부 확인했다.
통상적으로, -k 옵션을 통해 호출한 서비스가 실행되는 것이 일반적이며, 이 옵션이 존재하지 않을 시 악성코드일 가능성이 높다.
svchost 프로세스는 정상임을 알 수 있다.
powershell이나 python같은 스크립트 기반 실행 프로세스에도 적용할 수 있으며, 탐색 결과가 정상임을 확인할 수 있다.
종합적으로, 파라미터 관점에서 명령라인의 이상징후는 보이지 않았다.
다음으로는 프로세스의 부모-자식 관계를 분석해볼 것이다.
svchost.exe 프로세스의 부모-자식 관계를 확인해본다.
확인 결과, svchost.exe 파일이 전부 동일한 부모 pid, 즉 services.exe 프로세스를 부모로 두고 있는 것을 확인할 수 있다.
추가적으로, LoL(Living Off the Land) 바이너리의 유무를 확인한다.
powershell과 python의 경우, 부모 프로세스를 아무것도 가지고 있지 않은 것을 확인할 수 있다.
dllhost.exe의 부모 프로세스를 보면, pid가 508인 services.exe를 가지고 있지만, 추가적으로 pid가 636인 svchost 프로세스를 부모 프로세스로 추가로 들고 있는 것을 볼 수 있다.
dllhost.exe는 dll 파일을 제공하기 위한 호스팅 서비스를 운영하는 프로세스로, 어떤 프로그램이 실행될 때 svchost 혹은 services를 통해 간접적으로 실행한다.
따라서, 정상적이라면 svchost, services의 프로세스 pid가 부모인 dllhost.exe는 정상임을 확인할 수 있다.
따라서, 부모-자식 관계에서는 이상징후가 보이지 않았다.
마지막으로, 서명정보 및 버전정보를 확인한다.
해당 정보를 바탕으로, 정보가 비어있는 프로세스는 1292, 272, 2944, 3132, 3564, 408, 524, 532으로, 해당 프로세스의 데이터를 분석해본다.
분석에는 awk 툴을 사용할 것으로, 특정 데이터 값을 기반으로 조건에 맞게 다른 데이터를 출력할 것이다.
awk "{if($3==1292 || $3==272 || $3==2944 || $3==3132 || $3==3564 || $3==408 || $3== 524 || $3==532 ) print $2. $3}" pslist.txt |
이러면 버전 정보를 가지고 있지 않은 다양한 프로세스가 출력된다.
각각의 프로세스를 알아보면, 다음과 같다.
- smss.exe (272) :
Session Manager Process, 기본적으로 마스터 smss.exe 프로세스가 존재하며 세션 생성 후 해당 세션을 위한 smss.exe를 추가로 생성하는 프로세스. 생성된 smss.exe는 csrss.exe, wininit.exe, winlogon.exe등의 핵심 프로세스들을 생성하고 종료. 같은 smss.exe에 의해 생성된 프로세스는 PPID가 전부 동일.
빌트인 프로세스 - wininit.exe (408) :
부팅과정에서 초기에 실행되는 프로세스 중 하나, lsass.exe, services.exe, lsaiso.exe, lsm.exe 등의 주요 프로세스를 생성
빌트인 프로세스 - lsass.exe (524) :
Local Security Authority Service, 사용자나 그룹에 대한 로그인(인증), 패스워드 변경, 보안 로그 증적에 사용한다
빌트인 프로세스 - lsm.exe (532) :
Local Security Manager Service, 시스템의 로그인 세션 연결(로컬, 원격)을 관리하는 프로세스
빌트인 프로세스 - spoolsv.exe (1292) :
프린터 스풀러 서비스
빌트인 프로세스 - SearchIndexer (3132) :
파일 검색, 인덱싱 등의 서비스를 관리하는 책임지는 프로세스
빌트인 프로세스 - DumpIt.exe (3292) :
메모리 덤프에 사용한 프로세스 - 0.998154833330 (2944) :
빌트인 프로세스가 아님
버전 정보도 없는 의심할만한 프로세스
따라서, 2944 pid 값을 가진 0.998154833330라는 프로세스가 의심된다고 탐지되었다.
'KISA 사이버 보안 훈련 > 멀웨어 식별' 카테고리의 다른 글
악성 문서파일의 구성요소와 포맷 (0) | 2024.07.22 |
---|---|
프로세스 이상징후 분석 (시나리오 3) (0) | 2024.07.22 |
프로세스 이상징후 분석 (시나리오 1) (0) | 2024.07.21 |
윈도우 단말의 악성코드 유입 경로와 이상징후 식별 개요 (0) | 2023.06.03 |
윈도우 아티팩트 수집(실습) (0) | 2023.06.03 |