JS 파일의 변형

남혜리·2022년 8월 13일
0

해킹기법

목록 보기
2/7

JS 파일 구조의 변형

기존에는 동일한 코드 구조를 유지하며 매 다운로드마다 변수명, 함수명을 랜덤하게 변경하였다. 하지만 12월 15일부터는 매 다운로드마다 각행의 순서를 랜덤하게 섞는 기능이 추가되었고, 이러한 기능을 구현하기 위해 전체적인 코드 구조가 크게 달라졌다. 랜덤하게 행을 배열해도 동작하도록 1회의 함수 호출로 모든 기능을 수행한다. 또한 기존에는 변수명 등에 무작위 문자열을 사용했는데, 이번 변형으로 영문 단어를 사용한다(apple 등). 이러한 변형은 AV 제품의 스크립트 파일에 대한 Generic 진단 반영을 더 어렵게 하려는 목적으로 풀이된다.

JS 파일의 겉모습은 많이 달라졌지만 난독화 해제한 스크립트 즉 실제 악성 행위를 하는 코드는 거의 변경되지 않았다. 공격자는 진단 우회를 위해 악성 스크립트를 감싸고 있는 껍데기만을 지속적으로 변형하고 있다. JS 파일 하나 당 3개의 C2 주소를 가지고 있으며, 접속에 실패할 경우 다른 C2에 차례로 접속 시도한다.

C2 접속 방식의 변형

C2 주소는 침해된 정상 도메인이 사용되며 PHP 파일의 이름은 2020년 10월 26일까지는 “/check.php”를 사용하고 그 이후부터는 “/search.php” 이름을 사용 중이다. 그 이전에는 /info.php, forum.php 등의 파일명을 사용한 바 있다. PHP 파일에 전달되는 인자로는 랜덤한 값이 추가된다. 기존에는 HTTP 프로토콜을 사용하였는데, 2020년 3월 30일부터는 HTTPS 프로토콜을 사용한다. 따라서 라이브러리 업데이트가 되지 않은 구 버전의 OS에서는 동작하지 않을 수 있다.

JS 파일 실행 시 C2로부터 추가 JavaScript를 다운로드하여 실행한다. JavaScript는 PowerShell 스크립트를 풀어 실행한다. PowerShell 스크립트는 .NET 언어로 된 Injector를 메모리에 로드하여 실행하고 Injector는 Delphi 언어로 된 랜섬웨어 Loader를 정상 프로세스에 인젝션하여 실행한다. 인젝션된 Loader는 최종적으로 BlueCrab 랜섬웨어를 로드하게 된다. 결과적으로 다음 [그림 7]과 같이 여러 겹으로 포장된 형태를 취하는데, 각 단계별로 별도의 변형이 가능하여 AV 우회에 용이하다. 과거부터 JS -> PowerShell -> .NET -> Delphi 로 진행되는 감염 흐름은 변하지 않았으며 각 단계의 실행 방식, 상세 행위 등이 변형되었다.


이하 .NET PE는 “.NET Injector”, Delphi PE는 “Delphi Loader”로 칭한다.

참고자료

BlueCrab, https://asec.ahnlab.com/ko/19640/

profile
고장나지 않은

0개의 댓글