꿈을꾸는 파랑새

오늘은 Kimsuky(김수키)에서 만든 악성코드인 입력자료.lnk 에 대해서 글을 적어 보겠습니다.
파일명:입력자료.lnk
사이즈:1 MB
MD5:8c0f1a9e261ffb4788efeaba88fcb5f3
SHA-1:4f3d5d2f24d472f789bf55e6802c6cb1e23215f0
SHA-256:eca45bd69ae2374cd5d9dd7373c03812bea53a3782e4cf24aae12c3d2cb41956

악성코드 분석

악성코드 에 포함된 powershell 코드
악성코드 에 포함된 powershell 코드

1.PowerShell 코드 실행
$Savepath 명령어를 사용해서 미끼 엑셀 파일(.xlsx)을 추출해서 실행하기 위한 코드
악성코드 내에서 파일 추출
시작 오프셋:10,276바이트
추출 길이:8,382바이트
출력 파일: 입력자료.xlsx
정상 XLSX처럼 보이는 데이터를 LNK 파일 뒤쪽에 붙여 넣어서 사용자에게 보여주는 용도
lnk를 메모리에 읽은 다음 원본.lnk를 삭제하는 동시에 같은 기본 이름의. xlsx를 생성을 하게 됩니다. 바로 가기 파일 내부에 엑셀 파일 데이터를 숨겨둔 것임
2.아이콘 위치
C:\Program Files (x86)\HNC\Office 2022\HOffice120\bin\HCell.exe
한컴오피스 2022의 스프레드시트 프로그램인 한셀 실행 파일인 것을 확인할 수가 있음

악성코드 실행시 미끼 파일
악성코드 실행시 미끼 파일

3. 첫 번째 Base64 VBS 실행
$extrab를 Base64 복호화하는 과정을 거치게 되며 Set WshShell = CreateObject("WScript.Shell")
인스턴스를 생성하기 위해서 CreateObject를 사용을 합니다.
VBS 저장 경로:
C:\Users\Public\Videos\(무작위 5자리 숫자).vbs
은폐를 위한 숨김 처리
WshShell.Run의 두 번째 인수 0
-WindowStyle Hidden
비동기 실행을 위한 세 번째 인수 False

악성코드 Bat 다운로드
악성코드 Bat 다운로드

해당 부분은 악성코드 실행시 CMD 또는 PowerShell 창이 나타나는 것을 숨겨서 사용자가 악성코드를 실행하는 것을 모르게 하기 위한 장치
4. 두 번쨰 Base64 BAT 다운로더
각각 Base64 로 인코딩된 부분을 풀면 다음과 같은 결과를 확보할 수가 있음
c:\users\public\pictures(다운로드 및 실행 스테이징 경로)
hxxps://ntsgo(.)name/download/xtps1(첫 번째 다운로드)
hxxps://ntsgo(.)name/download/lcpy1C:\users\public\pictures\ps.dat(두 번째 다운로드)
hxxps://ntsgo(.)name/download/ps(Base64 상태에 PowerShell 저장 파일)
C:\Users\Public\pictures\p2.ps1(Base64 상태에 PowerShell 저장 파일)
hxxps://ntsgo(.)name/download/pro(네 번째 다운로드)
들을 건질 수가 있습니다.

Base64 디코딩
Base64 디코딩

그리고 무작위 파일명 및 폴더 생성을 시작
%random%:윈도우 환경에서 0~32,767 사이의 임의의 숫자를 생성하는 시스템 변수
3번 연속 붙여서(%random%%random%%random%) 매우 긴 무작위 숫자 조합을 만들어 RAND_NUM1 변수에 저장
그리고 나서 방금 만들어진 숫자의 맨 앞에 알파벳 t를 붙입니다.
미리 지정되어 있던 경로 변수인 %DEST% 뒤에 해당 무작위 문자열을 붙여 최종 경로인 DEST11을 완성
위와 같은 방법으로 또 다른 무작위 숫자를 만들고 나서 이번에는 앞에 s를 붙여 두 번째 경로인 DEST22를 생성
그리고 나서 새로운 난수를 생성하지 않고 바로 위에서 만든 RAND_NUM2 부분을 재사용
여기서 대신 알파벳 r을 붙여 세 번째 경로인 DEST33을 생성
5.Public Pictures 폴더 초기화
C:\Users\Public\Pictures\
에서 파일을 강제로 삭제 처리

악성코드 실행 시 등록되는 작업스케줄러
악성코드 실행 시 등록되는 작업스케줄러

옵션 정리
/q: 확인 메시지 생략 즉 사용자 몰래 실행
/f: 읽기 전용 파일도 강제 삭제
/s: 하위 디렉터리까지 모든 파일 삭제
6. 원격 파일 다운로드
curl: 웹 서버와 데이터를 주고받을 때 사용하는 기본 네트워크 명령어 여기서는 당연히 악성코드 다운로드 목적임
-s:실행 시 오류 및 진행 상태를 표시하지 않게 하는 모드
--max-time 30:최대 통신 시간 30초
-o:지정한 로컬 파일로 저장
&&:이전 curl이 성공한 경우 다음 curl 실행
다운로드 결과는 다음과 같이 될 것입니다.
/download/ttps1->C:\Users\Public\Pictures\t(난수)
/download/lcjq1->C:\Users\Public\Pictures\s(난수)
/download/ps->C:\Users\Public\Pictures\ps.dat
/download/pro->C:\Users\Public\Pictures\r(난수)
curl 체인 중 하나가 실패하면 더는 진행이 되지 않음

악성코드 파워셀 코드
악성코드 파워셀 코드

&& (AND 연산자):즉 앞의 명령어가 성공적으로 끝났을 때만 뒤의 명령어를 실행하는 방식을 취하고 있음
2차 PowerShell 복호화->최종적으로 C:\Users\Public\Pictures\p2.ps1 실행을 하게 됩니다.
7.작업 스케줄러 등록 및 지속성 확보
SCHTASKS /CREATE /TN "office365" /TR "taskpath" /SC MINUTE /MO 10 /F
이라는 명령어를 사용해서 예약작업을 생성하고 정상 Microsoft Office 구성 요소 보이게 하려고 office365 이라는 것을 생성하고 실행 주기를 분 단위로 지정을 하면 10분마다 반복을 합니다.
/F: 기존 작업이 있어도 강제로 덮어쓰기를 진행합니다.
IOC
ntsngc(.)name
hxxps://ntsngc(.)name/download/ttps1
hxxps://ntsngc(.)name/download/lcjq1
hxxps://ntsngc(.)name/download/ps
hxxps://ntsngc(.)name/download/pro
powershell -windowstyle hidden
ExecutionPolicy Bypass
certutil -decode
SCHTASKS /CREATE /TN "office365"
curl -s --max-time 30
C:\Users\Public\Videos\
C:\Users\Public\Pictures\ps.dat
C:\Users\Public\Pictures\p2.ps1
이렇게 정찰정보총국에서 산하 해킹 그룹인 김수키(Kimsuky)에서 만든 악성코드를 세밀히, 자세히, 확실히 까지 아니더라도 분석을 해 보았습니다.
즉 악성코드에 감염되지 않게 기본적인 보안 수칙을 세밀히, 자세히, 확실히 숙지를 하는 것이 권장합니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band