6년전, 나는 랜섬웨어에 관한 연구(공부)를 진행했던 적이 있다.
VM에 Windows를 올려서 랜섬웨어로 의심되는 파일들을 여러가지 다운받았고, 실제로 감염을 시켰었다.
감염 시키고 바로 네트워크 연결을 끊은 후 FTK Imager를 통해서 이미지를 만들었고,
감염이 되지 않은 VM에 이미지 파일을 올려서 분석을 했었다.
이외에도, 파이썬을 통해서 기초적인 랜섬웨어를 모방할 수 있는 코드를 만들어 보았었고,
만든 후 VM에 업로드 해서 파일을 암호화 시켜보았었다.
https://github.com/KKongten/Ransomware
GitHub - KKongten/Ransomware
Contribute to KKongten/Ransomware development by creating an account on GitHub.
github.com
이 코드가 그때 만들었던 기초적인 코드였다.
이제와서 생각해보면, 6년전에 내가 연구라고 생각했던 행위나, 코드를 만들었던 것들은..
침해사고 분석도 아니고, 랜섬웨어를 깊게 분석한 것도 아닌 이도저도 아닌 그냥 찍먹정도의 수준이였던 것이였다.
최근 나는 다시 랜섬웨어에 관심이 생겼다.
고객사의 협력업체에서 랜섬웨어에 감염된 PC가 있다는 연락을 받은 후 너무나 감사하게도 분석을 할 수 있는 기회가 있었다.
6년전에 뭣도 아닌 경험이 나에게 분석할 수 있는 기회가 주어졌다는것에 너무 감사했다.
그치만 도움은 전혀 되지 않았다.
그래서 이번에 다시 랜섬웨어를 공부해볼까 한다.
랜섬웨어란..?
랜섬웨어(Ransomware)는 사용자의 데이터를 암호화 하거나 접근을 하지 못하게 제한 한 뒤, 이를 복구 해주겠다는 대가로 금전을 요구하는 악성코드의 일종
- 금전은 대부분 암호화폐(비트코인)를 요구
랜섬웨어가 일반적인 악성코드와 다른점
일반적인 악성코드 | 랜섬웨어 | |
목적 | 정보 탈취, 감시, 시스템 장악 | 금전 취득 ( 파일 및 시스템 암호화 ) |
수익 모델 | 탈취한 정보 판매(딥, 다크웹), 계정 판매 | 복호화 대가로 금전 요구 |
기능 구조 | 키로거, 백도어, 브라우저 데이터 추출 등 | 파일 암호화, 복호화 키 관리, 랜섬노트 표시 |
탐지 가능성 | 은밀하게 작동하여 탐지 어려움 | 시스템 이용 불가, 재부팅, 경고문구등으로 즉시 탐지 가능 |
지속성 | 오랜기간 숨어서 활동 가능 | 단기간 안에 파일 전부 암호화 가능 |
파급력 | 특정 타깃을 대상으로 위주로 활동 | 무차별 감염 |
랜섬웨어 분류
랜섬웨어는 공격 유형에 따라 3가지로 분류된다.
1. Crypto Ransomware : 사용자 파일을 암호화 하는 유형
2. Locker Ransomware : 시스템 자체를 잠그는 유형
3. Hybrid Ransomware : 위 두가지 방식을 동시에 사용하는 유형
감염 단계
1. 초기 감염
- 이메일 첨부파일, 웹사이트 방문(Drive-By-Download), Exploit Kit, 악성 매크로가 포함된 Office 문서, PDF 문서, PE 실행파일 등을 통해서 감염 진행
2. 암호화 키 생성
- AES-128/256 등 여러 기법을 통해 파일을 암호화 하며, RSA-2048 등의 공개키로 암호화되어 공격자만 복호화가 가능함
3. 파일 탐색 및 암호화
- 암호화 타깃 검색 (확장자 탐색 : .docx, .xlsx, .pdf, .jpeg, .png, .hwp 등)
- 임의 확장자를 부여하면서 암호화하고 원본 파일은 삭제함
4. 복구 방지 및 은폐
- VSS(Shadow Copy) 파일, 이벤트 로그를 삭제하며, 탐지 회피 기술을 적용
5. 랜섬노트 및 사용자 협박
- 암호화 후 재부팅 된 이후 바탕화면에 유일하게 확인이 가능한 "README.txt" 파일을 제공하거나,
- 바탕화면을 변경시켜서 랜섬웨어에 감염되는 다는 것을 인지시킴
- N시간 내로 금전(비트코인)을 보내지 않으면 영원히 파일을 복구할 수 없다는 협박성을 강조함
6. 대가 지불 및 복호화
- 지불 완료되면 공격자는 복호화 툴을 제공함, 일부 랜섬웨어 공격자는 지불 후에도 복호화를 제공하지 않음
코드 업데이트
1. 암호화 키 부분 업데이트 예정
-> 연구 목적이었기 때문에 암복호화를 편하게 하기 위해서 "고정키"를 사용했었음
-> 이 부분을 랜덤 AES 키를 사용하고, RSA 기법을 사용하여 암호화 예정
-> 복호화 기능 또한 코드를 변경하여 랜덤 키값을 확인할 수 있도록 변경 예정
2. 네트워크 통신 ( 안함 )
-> 내 VM이 아닌, 다른 환경에 감염을 목적으로 한다면 C&C 서버 등을 통해 정보 유출이나,
공격자 서버와 통신, 추가 감염, 키 분배 등의 다양한 목적을 위해서 네트워크 통신 기능이 필요로 함.
-> 연구 목적이므로, 이 부분에 대해서는 별도로 추가 개발 하지 않음
3. 타깃 지정
-> 지정된 폴더를 탐색하는 방향으로 되어 있던 코드에서
-> 전체 디스크를 대상, 파일 확장자를 기준으로 감염 타깃을 설정하는 부분을 업데이트 예정
4. 은닉 기능 추가 및 백업 삭제
-> VSS 등 사용자가 만들어놓은 백업에 대해 삭제하는 방향으로 업데이트
-> 프로세스, 백그라운드, 이벤트로그 등에서 탐지되지 않도록 우회 코드 추가 예정
5. 실행방법 업데이트
-> GUI를 통해서 암호화/복호화를 진행했던 방식에서
-> 초기 감염방법으로 실행이 되었을 때 "시작 프로그램" 폴더에 등록을 하고,
-> PC 부팅 시 자동 실행되도록 변경 예정
코드가 업데이트 되는 과정은 Velog에 업로드 예정