오늘은 북한 해킹 단체 김수키(Kimsuky)에서 기부금 영수증.pdf.lnk(2025.8.18)이라는 제목으로 행복아동복지라는 기부금 이라는 영수증을 보여 주면서 깃헙브를 통해서 악성코드 유포하는 것을 분석을 해보겠습니다.\
해시\
파일명: 기부금 영수증.lnk\
사이즈:21 MB\
MD5:3e3e9c0242bef0ff898640f50b7837e8\
SHA-1:fe71887782586e351888b90502a5ec763126ed2f\
SHA-256:5833392068b7f84ac0b4b1769e4d9ea5f1eed59c67c6926e9c97fa569428bfac\
해당 악성코드는 기본적으로 핵심 부분은 Base64 로 인코딩이 돼 있는 것을 확인할 수가 있습니다.
#### 악성코드 분석
CyberChef Base 64 디코딩
PowerShell 스크립트를 실행하는 악성 실행\
실행되면 PowerShell이 작동하여 GitHub 에서 2차 페이로드를 내려받고 스케줄러 작업을 등록해 지속성을 확보 수집한 정보를 GitHub 저장소로 업로드 즉 유출하는 과정을 거치게 돼 있습니다.\
1.위장\
파일 속성에 Type: Hangul Document 라벨과 Goolge Chrome 아이콘을 사용해 문서처럼 보이도록 위장\
구글 크롬 브라우저 설치돼 있다고 하면 구글 크롬 아이콘으로 보일 것이며 구글 크롬 이 설치가 되어 있지 않으면 그냥 아이콘이 없을 것입니다.\
2.1단계: 드로퍼 역할\
LNK 실행 시 PowerShell 이 동작->내부에 포함된 Base64 을 디코딩\
해독된 내용(2차 스크립트)을 %TEMP%\zgbwe4rt.ps1 에 저장\
powershell -windowstyle hidden -ExecutionPolicy Bypass %TEMP%\zgbwe4rt(.)ps1 실행->숨겨진 상태로 2번째 단계로 진행\
3.2단계:실제 악성 스크립트\
GitHub API 및 raw(.)githubusercontent(.)com을 호출\
헤더에 Authorization:token (토큰) 포함->공격자가 발급한 GitHub Personal Access Token(PAT) 사용\
GitHub 저장소에서 추가 악성 페이로드 다운로드 후 실행\
4.지속성 확보\
Register-ScheduledTask 를 사용하여 숨겨진 예약 작업 생성 및 실행\
주기적으로 PowerShell을 -Hidden -NoProfile -ExecutionPolicy Bypass 옵션과 함께 실행하기 위해서 설정\
백그라운드에서 자동 실행.\
5.데이터 유출\
수집한 파일을 Base64로 인코딩->GitHub API의 PUT /repos/
JSON 포맷 { “message”: “Upload file …”, “content”: “
결과적으로 GitHub 저장소가 C2 서버 및 데이터 탈취 역할 수행\
6. 은폐/방어 회피\
Base64 여러 겹 인코딩, 난독화된 변수명, 사용자 정의 디코더 사용\
임시 파일/작업 삭제 (Remove-Item)
기부금 영수증
#### Base 64 악성코드 수행 분석
1. 디코이 표시\
gibu.pdf 를 hxxps://raw(.)githubusercontent(.)com/…/gibu.pdf 에서 다운로드 후\
%TEMP%\기부금 영수증.pdf 로 저장 후 즉시 실행(PowerShell & 로 연결 프로그램 실행)\
2. 지속성 검사\
예약 작업이 이미 있으면 즉시 종료\
3. 최초 설치 분기 (예약 작업 미 존재 시)\
타임스탬프 MMdd\_HHmm 생성 \
원격 템플릿 gibu\_real(.)txt를 GET->내용 중 $upFolder를 gibu\_<타임스탬프> 로 치환\
치환된 내용을 Base64 로 변환해 Git Hub 리포지토리 에 커밋 업로드\
경로/파일명: contents/gibu\_real(.)txt\_(타임스탬프).txt
zgbwe4rt 에 포함된 Powrsell code
메서드:PUT\
헤더: Authorization: token ghp\_…, Content-Type: application/json\
바디: { message: “Upload file gibu\_real.txt\_
개별 호스트 전용 스크립트 파일을 리포지토리에 생성\
예약 작업에 등록하기 위한 스텁 스크립트를 작성하여 %AppData%\BitLockerPolicyRefresh(.)ps1 로 저장\
예약 작업 등록(지속성 확보 목적)\
이름:BitLocker MDM policy Refresh\
5분 후 1회 실행 이후 30분 간격 반복 \
gibu\_first(.)txt 를 받아 $upFolder 동일 치환->%AppData%\temporary(.)ps1 로 저장 후\
powershell(.)exe -Hidden -NoProfile -NonInteractive -ExecutionPolicy Bypass -File 로 실행 후 삭제.\
4. 마무리\
0.2초 후 자기 삭제\
그리고 나서 기부금 영수증이라는 것을 생성하는데…. 북한 야들은 기부금 뜻도 모르는 것인지 아니 기부자가 아X다운재단 주소이고 기부받는 쪽이 국가 인권 위원회 주소로 해놓았음\
그리고 행복아동복지이라는 가상의 단체를 하나 만들어서 영수증이라고 해 놓았는데…. 아무튼, 나름 노력도 하지 않은 점을 존경하게 만듬\
아무튼, 최근에 GitHub를 통해서 악성코드 미끼 파일을 업로드 하고 그것을 다운로드 하고 실행을 하고 GitHub 에서 악성코드 업로드 해서 실행을 하는 느낌이…. 아무튼, 이제는 성의조차 안보임
오늘은 북한 해킹 단체 김수키(Kimsuky)에서 기부금 영수증.pdf.lnk(2025.8.18)이라는 제목으로 행복아동복지라는 기부금 이라는 영수증을 보여 주면서 깃헙브를 통해서 악성코드 유포하는 것을 분석을 해보겠습니다.
해시파일명: 기부금 영수증.lnk사이즈:21 MBMD5:3e3e9c0242bef0ff898640f50b7837e8SHA-1:fe71887782586e351888b90502a5ec763126ed2fSHA-256:5833392068b7f84ac0b4b1769e4d9ea5f1eed59c67c6926e9c97fa569428bfac해당 악성코드는 기본적으로 핵심 부분은 Base64 로 인코딩이 돼 있는 것을 확인할 수가 있습니다.
)com/…/gibu.pdf 에서 다운로드 후%TEMP%\기부금 영수증.pdf 로 저장 후 즉시 실행(PowerShell & 로 연결 프로그램 실행)2.
)txt를 GET->내용 중 $upFolder를 gibu_<타임스탬프> 로 치환치환된 내용을 Base64 로 변환해 Git Hub 리포지토리 에 커밋 업로드경로/파일명: contents/gibu_real(.
아무튼, 나름 노력도 하지 않은 점을 존경하게 만듬아무튼, 최근에 GitHub를 통해서 악성코드 미끼 파일을 업로드 하고 그것을 다운로드 하고 실행을 하고 GitHub 에서 악성코드 업로드 해서 실행을 하는 느낌이….
오늘은 북한 해킹 단체 김수키(Kimsuky)에서 기부금 영수증.pdf.lnk(2025.8.18)이라는 제목으로 행복아동복지라는 기부금 이라는 영수증을 보여 주면서 깃헙브를 통해서 악성코드 유포하는 것을 분석을 해보겠습니다.
해시
파일명: 기부금 영수증.lnk
사이즈:21 MB
MD5:3e3e9c0242bef0ff898640f50b7837e8
SHA-1:fe71887782586e351888b90502a5ec763126ed2f
SHA-256:5833392068b7f84ac0b4b1769e4d9ea5f1eed59c67c6926e9c97fa569428bfac
해당 악성코드는 기본적으로 핵심 부분은 Base64 로 인코딩이 돼 있는 것을 확인할 수가 있습니다.
악성코드 분석
CyberChef Base 64 디코딩
PowerShell 스크립트를 실행하는 악성 실행
실행되면 PowerShell이 작동하여 GitHub 에서 2차 페이로드를 내려받고 스케줄러 작업을 등록해 지속성을 확보 수집한 정보를 GitHub 저장소로 업로드 즉 유출하는 과정을 거치게 돼 있습니다.
1.위장
파일 속성에 Type: Hangul Document 라벨과 Goolge Chrome 아이콘을 사용해 문서처럼 보이도록 위장
구글 크롬 브라우저 설치돼 있다고 하면 구글 크롬 아이콘으로 보일 것이며 구글 크롬 이 설치가 되어 있지 않으면 그냥 아이콘이 없을 것입니다.
2.1단계: 드로퍼 역할
LNK 실행 시 PowerShell 이 동작->내부에 포함된 Base64 을 디코딩
해독된 내용(2차 스크립트)을 %TEMP%\zgbwe4rt.ps1 에 저장
powershell -windowstyle hidden -ExecutionPolicy Bypass %TEMP%\zgbwe4rt(.)ps1 실행->숨겨진 상태로 2번째 단계로 진행
3.2단계:실제 악성 스크립트
GitHub API 및 raw(.)githubusercontent(.)com을 호출
헤더에 Authorization:token (토큰) 포함->공격자가 발급한 GitHub Personal Access Token(PAT) 사용
GitHub 저장소에서 추가 악성 페이로드 다운로드 후 실행
4.지속성 확보
Register-ScheduledTask 를 사용하여 숨겨진 예약 작업 생성 및 실행
주기적으로 PowerShell을 -Hidden -NoProfile -ExecutionPolicy Bypass 옵션과 함께 실행하기 위해서 설정
백그라운드에서 자동 실행.
5.데이터 유출
수집한 파일을 Base64로 인코딩->GitHub API의 PUT /repos/<repo>/contents/<path> 요청으로 업로드
JSON 포맷 { ”message”: ”Upload file …”, ”content”: ”<base64>”, ”branch”: ”main” } 형태
결과적으로 GitHub 저장소가 C2 서버 및 데이터 탈취 역할 수행
6. 은폐/방어 회피
Base64 여러 겹 인코딩, 난독화된 변수명, 사용자 정의 디코더 사용
임시 파일/작업 삭제 (Remove-Item)
기부금 영수증
Base 64 악성코드 수행 분석
1. 디코이 표시
gibu.pdf 를 hxxps://raw(.)githubusercontent(.)com/…/gibu.pdf 에서 다운로드 후
%TEMP%\기부금 영수증.pdf 로 저장 후 즉시 실행(PowerShell & 로 연결 프로그램 실행)
2. 지속성 검사
예약 작업이 이미 있으면 즉시 종료
3. 최초 설치 분기 (예약 작업 미 존재 시)
타임스탬프 MMdd_HHmm 생성
원격 템플릿 gibu_real(.)txt를 GET->내용 중 $upFolder를 gibu_<타임스탬프> 로 치환
치환된 내용을 Base64 로 변환해 Git Hub 리포지토리 에 커밋 업로드
경로/파일명: contents/gibu_real(.)txt_(타임스탬프).txt
zgbwe4rt 에 포함된 Powrsell code
메서드:PUT
헤더: Authorization: token ghp_…, Content-Type: application/json
바디: { message: ”Upload file gibu_real.txt_<ts>.txt”, content: ”<base64>”, branch: ”main” }
개별 호스트 전용 스크립트 파일을 리포지토리에 생성
예약 작업에 등록하기 위한 스텁 스크립트를 작성하여 %AppData%\BitLockerPolicyRefresh(.)ps1 로 저장
예약 작업 등록(지속성 확보 목적)
이름:BitLocker MDM policy Refresh
5분 후 1회 실행 이후 30분 간격 반복
gibu_first(.)txt 를 받아 $upFolder 동일 치환->%AppData%\temporary(.)ps1 로 저장 후
powershell(.)exe -Hidden -NoProfile -NonInteractive -ExecutionPolicy Bypass -File 로 실행 후 삭제.
4. 마무리
0.2초 후 자기 삭제
그리고 나서 기부금 영수증이라는 것을 생성하는데…. 북한 야들은 기부금 뜻도 모르는 것인지 아니 기부자가 아X다운재단 주소이고 기부받는 쪽이 국가 인권 위원회 주소로 해놓았음
그리고 행복아동복지이라는 가상의 단체를 하나 만들어서 영수증이라고 해 놓았는데…. 아무튼, 나름 노력도 하지 않은 점을 존경하게 만듬
아무튼, 최근에 GitHub를 통해서 악성코드 미끼 파일을 업로드 하고 그것을 다운로드 하고 실행을 하고 GitHub 에서 악성코드 업로드 해서 실행을 하는 느낌이…. 아무튼, 이제는 성의조차 안보임