| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- SQL
- 소프티어
- python
- 자바
- 도커
- java
- kotlin
- 문제풀이
- CJ UNIT
- 코딩교육봉사
- 코틀린
- 회고
- 파이썬
- C++
- softeer
- 백준 알고리즘
- 프로그래머스
- MYSQL
- programmers
- 백준알고리즘
- 정보처리산업기사
- 1과목
- 코딩봉사
- SW봉사
- BFS
- 알고리즘
- 데이터베이스
- 공부일지
- docker
- 백준
- Today
- Total
JIE0025
[보안] 랜섬웨어를 쉽게 이해해보자! 본문
랜섬웨어란?
Ransomware = Ransom (몸값) + Software (소프트웨어)
피해자의 데이터/디바이스를 암호화하고(잠그고), 피해자가 공격자에게 랜섬을 지불하지 않을 경우
잠금을 풀어주지 않거나, 더 상황을 악화시키겠다고 협박하는 멀웨어의 일종이다.
악성코드의 일종이지만, 시스템을 암호화시키는 특성이 있는 악성코드이다.
이슈
최근 랜섬웨어 관련 이슈가 자주 발생하여 뉴스가 많다.
예스24에 금융권까지 덮친 랜섬웨어 해킹… 데이터 영구 삭제해 복구 불가능한 공격도 등장
예스24에 금융권까지 덮친 랜섬웨어 해킹 데이터 영구 삭제해 복구 불가능한 공격도 등장 공격 수법 진화 4중 갈취에 데이터 영구 삭제 중견기업 침해 사고 23% 늘어
biz.chosun.com
뉴스에 보면 최근 이슈는
보안/담당인력이 부족한 비영리 기관의 그룹웨어 서버,
네트워크 연결장치 ( NAS )를 대상으로 피해가 집중 발생한다고 이야기한다.
대부분의 랜섬웨어가 Windows 컴퓨터를 감염시키나, Android, Mac 시스템 사례도 발견되기도 한다.
랜섬웨어의 공격 절차

1. 여러 경로를 통해 랜섬웨어 감염을 시킬 수 있다.
> email / network / homepage 등
2. 암호화 대상을 검색하고, 파일을 암호화한다. (문서/이미지 등)
3. 공격자는 피해자에게 감염사실을 알리고 가상화폐와 같은 것으로 복호화 대가를 요구한다.
감염 방식에는 여러가지가 있는데
보안이 취약한 웹사이트
Email /SNS / 첨부파일 실행 / 파일공유 사이트 활용
보안설정이 미흡한 유무선 네트워크의 악용
해킹을 통해 직접 침투 등이 있다.
더 디테일하게 공격절차를 이해해보자.
1. 자기 자신을 시작 프로그램에 등록한다 (재부팅해도 계속 실행되도록)
>> 리눅스의 경우엔 cron / crontab
2. 파일을 검색한다 (문서/ 사진 / 압축파일)
3. 암호화 알고리즘을 적용하여 암호화 한다. (AES/RSA를 사용한다)
RSA와 같은 암호화 알고리즘은
암호화 키를 모르면 복호화할 수 없는 복잡한 알고리즘이다.
4. 암호화된 파일 뒤에 특정 확장자를 붙힌다. (.locked)
5. 바탕화면에 랜섬노트를 남긴다
>> "비트코인 1개를 내놔라!!!"
RSA 와 AES를 어떻게 사용한다는 것일까?
1. 준비 단계
가장먼저 공격자는 RSA 공개키/ 개인키 쌍을 준비한다.
공개키는 피해자의 PC에 심어진다.
개인키는 공격자만 가지고 있는다.
2. 공격 단계
공격자는 피해자의 PC에서 파일 암호화시 AES키를 하나 만들어서 파일을 암호화한다.
해당 AES키를 RSA 공개키로 암호화 해버린다.
"hello" -> rsa 공개키랑 같이 데이터("hello") 암호화 > "QWJEHJDHJKAHSDJK" 키 AES 암호화된 키
그러면 개인키가 없는 피해자는 복호화를 할 수 없게된다.
쉬운 설명으로 다시 이해해보자
AES 키 = 금고의 열쇠 (내 파일이 암호화된 진짜 열쇠이다. )
>> AES는 대칭키 이기 때문에 암호화/복호화 시 사용하는 키 값이 동일하다.
공격자는 피해자의 PC에서 파일 암호화 용 AES키를 하나 만들고 파일을 암호화한다.
이 파일은 AES 키를 알아야만 복호화 할 수 있다.
근데 이 키를 비대칭키 (공개키/개인키)인 RSA의 공개키로 암호화 해버린다.
AES 키값을 피해자는 알수 없게된다.
비대칭키는 공개키로 암호화하면 개인키로 복호화할 수 있는 특징이 있다.
공격자
> 야 비트코인 내놔라
> 안 주면 RSA개인키 삭제해버릴거야
> 그러면 너네는 데이터 평생 못찾아
> 난 그 데이터 관심없긴해 알 바 아니다.
기업
> Oh My GOD!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
이런 사태가 벌어지지 않으려면 랜섬웨어 대응 훈련을 진행해야한다.
랜섬웨어 코드 예시
지피티한테 랜섬웨어를 더 잘 이해할 수 있게 코드를 가져오라고 시켰다.
아래는 파이썬 코드로 작성을 해주었는데
파이썬 코드는 파이썬이 설치된 환경에서만 작동하고, 만들기가 쉽다. 그래서 랜섬웨어 연습/연구용으로 자주 사용된다.
( 실제 공격자가 파이썬을 .exe로 만들어서 쓰는 경우도 있을수도 )
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization, hashes
# 1. RSA 키 쌍 생성 (공격자는 private_key를 보관)
private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
public_key = private_key.public_key()
# 2. 평문(예: AES 키라고 가정)
aes_key = b"this_is_a_fake_aes_key"
# 3. RSA 공개키로 AES 키 암호화 (피해자 PC에서 일어나는 일)
encrypted_aes_key = public_key.encrypt(
aes_key,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
print("암호화된 AES 키:", encrypted_aes_key[:20], "...") # 앞부분만 출력
# 4. 공격자 측에서 개인키로 복호화
decrypted_aes_key = private_key.decrypt(
encrypted_aes_key,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
print("복호화된 AES 키:", decrypted_aes_key)
* 대부분 윈도우즈 환경을 노린다고는 한다.
그래서 파이썬 코드보다도 C/C++과 같은 언어를 사용하여 공격을 한다.
> 윈도우 API를 직접 호출이 가능하고, 실행속도가 빠르기 때문이다.
** WannaCry와 같은 랜섬웨어도 C언어 계열로 작성 되었다고 한다.
출처
KISA - 랜섬웨어 대응 가이드라인
https://www.kisa.or.kr/402/form?postSeq=2299#fnPostAttachDownload
KISA 한국인터넷진흥원
KISA, 랜섬웨어 대응을 위한 가이드라인 개정본 배포 - 해커가 기업을 침투할 때 사용하는 공격방식과 대응방안 제시 - 한국인터넷진흥원(KISA, 원장 이원태)과 과학기술정보통신부(장관 이종호)
www.kisa.or.kr
내 머릿속의 어딘가 남아있는 보안지식
'보안' 카테고리의 다른 글
| DDoS 공격이란? (0) | 2025.05.26 |
|---|---|
| DLL(Dynamic Linked Library) 이란? (1) | 2020.06.07 |
| [악성코드분석] CodeEngn 코드엔진 Basic RCE L05 (0) | 2020.04.19 |
| [악성코드분석] CodeEngn 코드엔진 Basic RCE L04 + 정상 띄우기 (0) | 2020.04.17 |
| [악성코드분석] CodeEngn 코드엔진 Basic RCE L03 + 추가 분석 (0) | 2020.04.11 |