10P by GN⁺ 18일전 | ★ favorite | 댓글 1개
  • 작성자는 Akira 랜섬웨어에 감염된 회사의 데이터를 몸값을 지불하지 않고 복구하는 데 성공
  • 복구 과정에서 사용한 소스 코드GitHub에서 제공
  • Akira 랜섬웨어는 다양한 변종이 존재하며, 2023년 후반부터 활동 중인 변종임
  • 이전 버전(2023년 중반 이전)에는 Avast가 복호화기를 개발할 수 있는 버그가 있었지만, 이 내용이 공개된 후 공격자가 암호화를 업데이트함
  • 랜섬웨어 샘플 해시는 GitHub에서 확인 가능

Akira 랜섬웨어(Linux/ESXI Variant 2024) 파일 복구 방법 요약

해결 접근 방식

초기 분석

  • 랜섬웨어는 나노초 단위의 현재 시간을 시드로 사용
  • Linux의 파일 수정 시간이 나노초 해상도를 가지므로 시드 복구 가능성 발견
  • 수정된 파일의 타임스탬프를 기반으로 브루트포스 접근 시도

복잡한 암호화 과정

  • 랜섬웨어는 4개의 시드 값(나노초 단위 시간) 사용
  • 키 생성은 SHA-256 해시를 1500회 반복 처리
  • VMware VMFS 파일 시스템은 수정 시간을 초 단위로만 저장함
  • 다중 스레드 기반 암호화로 인해 정확한 타이밍 복구 어려움

리버스 엔지니어링

  • 코드가 C++로 작성되어 분석이 어려웠으나, 난독화되지 않음
  • 오류 메시지를 통해 Nettle 라이브러리 사용 확인
  • 랜덤 생성기는 Yarrow256 알고리즘 기반이며 다음과 같은 코드를 사용함
void generate_random(char *buffer, int size)  
{  
    uint64_t t = get_current_time_nanosecond();  
    char seed[32];  
    snprintf(seed, sizeof(seed), "%lld", t);  
    struct yarrow256_ctx ctx;  
    yarrow256_init(&ctx, 0, NULL);  
    yarrow256_seed(&ctx, strlen(seed), seed);  
    yarrow256_random(&ctx, size, buffer);   
}  
  • 키 생성 시 4번의 generate_random() 호출 발생
    • chacha8_key (32바이트)
    • chacha8_nonce (16바이트)
    • kcipher2_key (16바이트) × 2

브루트포스 가능성 검토

주요 전략

  • 두 개의 타임스탬프(t3, t4)를 생성해 시드로 변환 후 난수 생성
  • 난수를 KCipher2 키IV로 사용해 암호화 후 결과와 암호화된 파일 비교

성능 분석

  • 1억 개의 타임스탬프를 변환하는 데 3시간 소요 (CPU 기준)
  • GPU 사용 시 변환 속도 → 6분 이하로 단축
  • 1초 범위에 대해 가능한 쌍은 약 500조 개
  • GPU 최적화 후 RTX 3090에서 초당 15억 회 암호화 처리 가능

VMWare 파일 타입 및 복구 전략

FLAT-VMDK

  • VMDK의 첫 8바이트는 부트로더에서 복구 가능
  • OS 정보를 VMX 파일에서 확인해 동일한 OS 설치 필요

SESPARSE

  • QEMU의 소스 코드에서 파일 헤더 패턴 확인
  • 헤더가 0x00000000cafebabe로 시작

기타 파일

  • NVRAM 파일, VMX 파일, 로그 파일 등에서 초기 타임스탬프 확인 가능

타임스탬프 복구

ESXi 로그

  • ESXi 로그에서 밀리초 단위 실행 시간 기록
  • 밀리초 단위 로그가 없으면 초 단위 시간에서 추정 가능

파일 시스템 수정 시간

  • ESXi의 경우 초 단위 해상도이기 때문에 정확한 시간 추정 어려움

다중 스레드 암호화

  • 파일 암호화는 CPU 코어 수만큼 병렬 처리
  • 파일의 수정 시간은 암호화 완료 시간에 가까움

브루트포스 도구 구현

KCipher2 알고리즘

  • 표준 KCipher2가 아닌 수정된 버전 사용 (Endian 처리 포함)
  • CUDA 사용해 GPU 최적화 진행

성능 개선

  • 공유 메모리 사용해 성능 개선
  • 메모리 복사 제거로 속도 향상
  • 병렬 파일 처리 구현 → 초당 약 15억 회 처리 가능

RTX 3090 vs RTX 4090

  • RTX 4090이 약 2.3배 빠름 → 7일 소요
  • RTX 3090 → 약 16일 소요

복구 단계

1. 타임스탬프 추출

  • stat 명령으로 수정 시간 확인
  • ESXi 로그에서 실행 시작 시간 추출

2. 암호화 데이터 추출

  • VMDK, SESPARSE 등에서 암호화된 블록 추출

3. 서버 속도 측정

  • GitHub의 timing-patch 도구 사용

4. 작업 분할

  • 구성 파일 생성 및 분할
  • GPU에서 병렬 실행 가능하도록 설정

5. GPU 대여 및 실행

  • Runpod → 7일에 약 116달러 비용
  • Vast.ai → 더 저렴하지만 기기 상태에 따라 속도 차이 발생 가능

6. KCipher2 브루트포스 실행

./akira-bruteforce run2 config.json  

7. Chacha8 브루트포스 실행

  • 대형 파일의 경우 필요

8. 복호화 실행

./decrypt filename.vmdk <t1> <t2> <t3> <t4>  

성능 결과

  • RTX 3090 → 초당 15억 회 처리
  • RTX 4090 → 초당 35억 회 처리
  • 16개의 RTX 4090 사용 시 → 10시간 이내 복구 가능

복구 가능성 및 한계

  • 랜섬웨어 복구 성공 확률은 0.1% 미만
  • 특정 조건이 충족될 경우 복구 가능성 존재
  • 랜섬웨어 변종에 따라 암호화 방식이 변경될 수 있음

결론

  • 랜섬웨어 복구는 매우 어렵지만, 특정한 조건에서는 성공 가능
  • GPU 기반 브루트포스가 핵심 도구
  • 작성자는 복구 코드를 오픈 소스로 공개했지만 추가 지원은 어려움

추가 참고 사항

  • GitHub의 README.md 파일 참고
  • 코드는 특정 클라이언트 상황에 맞춰 작성됨 → 범용 도구 아님
  • 구성 파일 생성, 타이밍 조정 등은 시스템 관리자 수준의 기술 필요
Hacker News 의견
  • 누군가 랜섬웨어의 "제한된 수명"에 대해 언급했음. 이로 인해 다른 피해자에게는 영향이 없다는 의견을 삭제했지만, 이에 대한 답변을 게시함

    • 잘못된 정보임. 제한된 것은 피해자가 파일을 복구할 수 있는 공격의 수임
    • 저자가 이 공격을 사용한 유일한 사람이라고 생각한다면 그것도 잘못된 생각임
    • The Ransomware Hunting Team이라는 책을 추천함. 피해자들이 파일을 복구하는 과정의 뒷이야기를 다룬 흥미로운 책임
  • 왜 타임스탬프를 사용하는지에 대한 질문이 있었음

    • 오해하지 말길 바라며, 사용하지 않는 것이 기쁘지만 초보적인 실수처럼 보임
    • 내가 놓친 것이 있는지, 아니면 범죄를 선택하지 않는 사람들이 더 많은 것인지 궁금함
  • 이 글은 읽기 좋았고, 과정에 대한 호기심을 만족시킬 만큼의 적절한 세부사항을 담고 있었음

    • 저자가 이 과정을 고안하고 흥미로운 세부사항을 제공한 것에 큰 찬사를 보냄
  • 애플리케이션이 기본적으로 샌드박스화된다면 랜섬웨어 문제는 줄어들 것임

  • "내 미니 PC CPU에서 초당 100,000 타임스탬프를 랜덤 바이트로 계산하는 속도를 추정했음 (모든 코어를 활용하여)"

    • 미니 PC에 대한 더 많은 세부사항을 알고 싶음. 프로세서, RAM, 가격, 팬리스인지 궁금함
  • 처음 65k를 KCipher2로 암호화하고 나머지를 다른 것으로 암호화하는 이유가 무엇인지 궁금함. 이상해 보임

  • "이것을 게시한 후 공격자들이 암호화를 다시 변경할 것이라고 예상함"

    • 그들이 이를 인지한다면, 왜 게시하는 것인지 궁금함. 인터넷 명성을 위해 이렇게 상세한 복호화기를 제공하는 것은 무책임해 보임
    • 흥미로운 읽을거리이며 지적 호기심이 자극되지만, 세부사항을 비공개로 유지하는 것이 커뮤니티 전체에 더 나을 것임
  • "내 인도네시아 블로그에 랜섬웨어에 대해 글을 쓸 때마다 많은 사람들이 랜섬웨어 도움을 요청함"

    • 랜섬웨어가 복구 가능한지 확인하는 것만으로도 몇 시간의 노력과 시간이 소요될 수 있음 (예: 악성코드가 난독화/보호된 경우)
    • 그러니 무료로 해달라고 요청하지 말라는 의견임
    • 그럼 비용을 청구하라는 의견임