랜섬웨어 개발자들은 다양한 측면에서 페이로드 개발을 계속해서 실험하고 있습니다. 랜섬웨어 구현의 역사를 살펴보면, 단순한 화면 잠금 방식에서 파일 암호화를 위한 다중 구성 요소 모델로, 그리고 초보적인 접근 방식에서 정교한 접근 방식으로 진화하는 모습을 볼 수 있습니다. 랜섬 도구로서 야생에서 진화했으며 그중 하나가 Quick Heal 연구실에서 접수되었습니다. 이 샘플은 다음과 같이 식별됩니다. 로커 고가 암호화를 수행하기 위한 다양한 옵션을 제공하는 도구 역할을 한다는 점에서 독특합니다.
다른 표준 명령줄 도구와 마찬가지로 LockerGoga 랜섬웨어는 도움말 정보를 표시합니다. -h 매개변수를 사용하여 실행하면 LockerGoga의 인쇄 버전을 위한 "-v" 옵션과, 피해자가 암호화된 파일을 복호화하려는 경우 지불을 위해 공격자의 이메일 주소를 지정하는 "-m" [이메일 ID를 인수로 지정] 매개변수와 같은 옵션이 표시됩니다. 랜섬웨어 복구 프로그램 비용을 문의하려면 랜섬 노트에도 동일한 이메일 주소가 언급되어 있습니다.

LockerGoga는 명령줄 인수를 구문 분석하기 위해 Boost 라이브러리를 사용합니다.

명령줄 도구의 마지막 옵션인 "-p"를 사용하면 악성 코드를 주입해야 하는 프로세스를 선택할 수 있습니다. 프로세스 이름이 제공되지 않으면 기본적으로 "winlogon.exe"에 코드를 주입합니다.
수신된 샘플에는 다음과 같은 4개의 실행 가능한 구성 요소가 포함되어 있습니다.
- encrypt32.dll
- encrypt64.dll
- {random_name}.exe(32비트)
- {random_name}.exe(64비트)
실행 시, 맬웨어는 위에서 언급한 시스템 아키텍처에 따라 %AppData%/Local/Temp 위치에 dll 구성 요소를 삭제합니다.
그런 다음 1024비트 RSA 공개 키와 셸 코드를 "winlogon.exe" 프로세스 또는 인수로 지정된 프로세스에 삽입합니다. 삽입된 셸 코드는 ldrloaddll의 도움을 받아 삭제된 encrypt**.dll을 로드하는 데 사용됩니다.
encrypt**.dll에는 "encryptStart"라는 내보내기 함수가 있습니다. 이 함수에는 모든 드라이브와 폴더를 열거하여 해당 드라이브와 폴더에 있는 파일 목록을 생성하는 코드가 포함되어 있습니다. 모든 파일 목록은 C:\cl.log 파일에 저장됩니다.

C:\cl.log에 나열된 각 파일에 대해 시스템의 64비트 또는 32비트 아키텍처에 따라 %AppData%/Local/Temp 또는 C:\Windows\Temp에 {random_named}.exe라는 실행 파일을 삭제하고, -k{공개 키} {파일 경로(암호화할 파일)}를 명령줄 인수로 사용하여 루프에서 해당 {random_named}.exe를 호출합니다.
LockerGoga 랜섬웨어의 독특한 점은 각 파일에 대해 새로운 프로세스를 생성하고 해당 파일을 암호화한 후 종료한다는 것입니다. 이 기법을 사용하면 랜섬웨어 방지 제품암호화가 진행되는 동안 CPU 리소스의 거의 90%가 소모됩니다.

각 파일의 암호화가 완료되면 C:\cl.log에 파일 이름을 기록합니다.
암호화 프로세스:
AES-128비트를 사용하여 파일 내용을 암호화하고, RSA-1024비트를 사용하여 파일 내용을 암호화하는 데 사용되는 AES 키를 암호화합니다.
AES 키 생성:
처음에는 "CryptGenRandom" API를 사용하여 32(20h) 바이트의 난수 시드를 생성했습니다. 그런 다음 리소스 섹션에서 32(20h) 바이트를 더 사용하여 40h 바이트의 키 스택을 만들고, 이를 AES 키 생성에 사용했습니다.
LockerGoga는 Boost 라이브러리와 함께 암호화 프로세스를 위한 Crypto++ 라이브러리를 구현하여 샘플을 되돌리는 것을 매우 어렵게 만듭니다.


Crypto++ 라이브러리를 구현하면 인텔이 2009년에 도입한 AES-NI(AES new instruction set)를 사용할 수 있습니다.
AESKEYGENASSIST 및 AESENC 명령어는 AES 암호화를 구현하는 데 사용됩니다.
AESKEYGENASSIST는 라운드 키 확장에 사용되고 AESENC는 AES의 1라운드 암호화를 수행하는 데 사용됩니다.


위의 모든 작업을 마친 후 32바이트의 데이터가 생성되는데, 그 중 16바이트는 키로 사용되고 나머지 16바이트는 초기화 벡터(IV)로 사용됩니다.

맬웨어는 파일을 암호화하기 전에 파일 확장자를 .locked로 변경합니다.

![]()

암호화에 사용되는 공개 키는 PEM 형식입니다.

아래에 표시된 Microsoft Blob 형식으로 변환합니다.


키(10h), IV(10h) 및 파일 크기로 사용되는 8h 바이트(즉, 암호화할 파일)는 'MGF1024(SHA-1)'(즉, OAEP 패딩 방식에 대한 마스크 생성 함수)을 사용하여 RSA-1 비트로 암호화되어 파일 끝에 추가됩니다.

그런 다음 CTR 모드에서 128비트 키 길이의 AES 키와 IV를 사용하여 파일 내용을 암호화합니다.
결론 :
LockerGoga는 하나의 마스터 프로세스와 여러 개의 슬레이브 프로세스를 생성하여 파일을 암호화하는 독특하고 희귀한 메커니즘을 보여주었습니다.
주요 특징들:
복잡한 수학 계산을 처리하려면 Boost 라이브러리를 사용하세요.
암호화를 위해 Microsoft Crypto API를 사용하는 대신 Crypto++ 라이브러리(Boost Software License)를 구현했습니다.
IoC:
1E8A6AABF4ADF3AE1890A4C8A2CFF276 – LockerGoga
91976DBD489FEAE2D8719545C8DE304A- encrypt32.dll
174E3D9C7B0380DD7576187C715C4681-encrypt64.dll
E9E6EBC6A0D5183FC8E66472B3419F1E-{random_name}.exe-64 bit
A52F26575556D3C4ECCD3B51265CB4E6 – {random_name}.exe-32 bit
주제 전문가:
Goutam Tripathy, Rahul Sharma, Manisha Prajapati | Quick Heal 보안 연구소



