곡유기 λ³΄μ•ˆ/λͺ¨μ˜ν•΄ν‚Ή

07. μ•…μ„±μ½”λ“œ λ™μž‘ 원리와 탐지

Jaeyoon Β· κ°œλ… ν•™μŠ΅ μ•…μ„± ν–‰μœ„ μœ ν˜•, IOC, 둜그, λ„€νŠΈμ›Œν¬ 흔적, λ°©μ–΄ 관점

μ•…μ„±μ½”λ“œλ₯Ό κ³΅λΆ€ν•˜λŠ” 이유

μ•…μ„±μ½”λ“œλ₯Ό κ³΅λΆ€ν•œλ‹€λŠ” 것은 μ•…μ„± ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€κ±°λ‚˜ μ‹€ν–‰ν•΄ λ³΄λŠ” 것이 μ•„λ‹™λ‹ˆλ‹€. μ€‘μš”ν•œ 것은 κ³΅κ²©μžκ°€ μ–΄λ–€ 행동을 ν•˜λ €κ³  ν•˜λŠ”μ§€, κ·Έ 행동이 μ‹œμŠ€ν…œκ³Ό λ„€νŠΈμ›Œν¬μ— μ–΄λ–€ 흔적을 λ‚¨κΈ°λŠ”μ§€, 그리고 λ°©μ–΄μžλŠ” μ–΄λ–€ κΈ°μ€€μœΌλ‘œ 이상 μ§•ν›„λ₯Ό νŒλ‹¨ν•˜λŠ”μ§€ μ΄ν•΄ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

μ•…μ„± ν–‰μœ„λŠ” λŒ€κ°œ μ‚¬μš©μžκ°€ μ›ν•˜μ§€ μ•ŠλŠ” λ™μž‘μ„ λͺ°λž˜ μˆ˜ν–‰ν•©λ‹ˆλ‹€. νŒŒμΌμ„ λ‚΄λ €λ°›κ±°λ‚˜, μžλ™ 싀행을 λ“±λ‘ν•˜κ±°λ‚˜, μ™ΈλΆ€ μ„œλ²„μ™€ ν†΅μ‹ ν•˜κ±°λ‚˜, μžμ›μ„ κ³Όλ„ν•˜κ²Œ μ‚¬μš©ν•˜κ±°λ‚˜, μž…λ ₯κ°’κ³Ό ν΄λ¦½λ³΄λ“œλ₯Ό κ°μ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이런 λ™μž‘μ„ ν•˜λ‚˜μ”© λΆ„ν•΄ν•΄μ„œ 보면 λ§‰μ—°ν•œ 두렀움이 ꡬ체적인 λ³΄μ•ˆ κ°œλ…μœΌλ‘œ λ°”λ€λ‹ˆλ‹€.

이 μž₯은 μ•ˆμ „ν•œ λ°©μ–΄ν˜• ν•™μŠ΅μ„ μœ„ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. μ‹€μ œ μ•…μ„±μ½”λ“œ μ‹€ν–‰ λŒ€μ‹  κ°€μ§œ 둜그, μƒ˜ν”Œ λ¬Έμžμ—΄, μ˜ˆμ‹œ ν”„λ‘œμ„ΈμŠ€, λ‚΄λΆ€ ν…ŒμŠ€νŠΈ λ„λ©”μΈμœΌλ‘œ 원리λ₯Ό μ΄ν•΄ν•©λ‹ˆλ‹€.

그림으둜 λ³΄λŠ” 탐지 흐름

IOC와 μ•…μ„± ν–‰μœ„ 탐지 흐름
μ˜μ‹¬ μ¦μƒμ—μ„œ IOCλ₯Ό μˆ˜μ§‘ν•˜κ³  μ‹œμŠ€ν…œ/λ„€νŠΈμ›Œν¬ 흔적을 비ꡐ해 이상 μ—¬λΆ€λ₯Ό νŒλ‹¨ν•œλ‹€.
νƒμ§€λŠ” β€œμ΄μƒν•΄ λ³΄μΈλ‹€β€μ—μ„œ λλ‚˜μ§€ μ•Šκ³ , μ–΄λ–€ 흔적이 μ™œ μ΄μƒν•œμ§€ μ„€λͺ…ν•˜λŠ” κ³Όμ •μž…λ‹ˆλ‹€.CPU μ‚¬μš©λ₯ , ν”„λ‘œμ„ΈμŠ€, 파일, μžλ™μ‹€ν–‰, λ„€νŠΈμ›Œν¬ 연결을 ν•¨κ»˜ 봐야 ν•©λ‹ˆλ‹€.
μ‰½κ²Œ λ§ν•˜λ©΄μ•…μ„± ν–‰μœ„ 뢄석은 범인을 λ§Œλ“œλŠ” 일이 μ•„λ‹ˆλΌ 흔적을 μ½λŠ” μΌμž…λ‹ˆλ‹€. 방이 μ–΄μ§€λŸ½ν˜€μ Έ 있으면 발자ꡭ, μ—΄λ¦° μ°½λ¬Έ, 사라진 물건을 보고 무슨 일이 μžˆμ—ˆλŠ”μ§€ μΆ”λ¦¬ν•˜λŠ” 것과 λΉ„μŠ·ν•©λ‹ˆλ‹€.
ν™”μ΄νŠΈν–‡ λ³΄μ•ˆ μ•„μ΄μ½˜
ν™”μ΄νŠΈν–‡ λ³΄μ•ˆ μ•„μ΄μ½˜ Wikimedia Commons
탐지 체크리슀트
탐지 체크리슀트 Wikimedia Commons
λ„€νŠΈμ›Œν¬ 뢄석 ν™”λ©΄
λ„€νŠΈμ›Œν¬ 뢄석 ν™”λ©΄ Wikimedia Commons

μ•…μ„± ν–‰μœ„μ˜ 큰 λΆ„λ₯˜

크립토 λ§ˆμ΄λ„ˆ λ™μž‘ 원리
크립토 λ§ˆμ΄λ„ˆ μœ ν˜•μ€ 높은 CPU/GPU μ‚¬μš©λŸ‰κ³Ό 반볡적인 μ™ΈλΆ€ μ—°κ²° 흔적을 남길 수 μžˆλ‹€.

크립토 λ§ˆμ΄λ„ˆ μœ ν˜•μ€ PC의 CPUλ‚˜ GPU μžμ›μ„ λͺ°λž˜ μ‚¬μš©ν•˜λ €λŠ” ν–‰μœ„μž…λ‹ˆλ‹€. μ‚¬μš©μžλŠ” 컴퓨터가 κ°‘μžκΈ° λŠλ €μ§€κ³  팬이 μ„Έκ²Œ λŒκ±°λ‚˜ μ „λ ₯ μ‚¬μš©λŸ‰μ΄ λŠ˜μ–΄λ‚˜λŠ” ν˜•νƒœλ‘œ 이상을 λŠλ‚„ 수 μžˆμŠ΅λ‹ˆλ‹€. λ°©μ–΄ κ΄€μ μ—μ„œλŠ” 높은 CPU μ‚¬μš©λ₯ , λ‚―μ„  ν”„λ‘œμ„ΈμŠ€, μ™ΈλΆ€ ν’€ μ„œλ²„μ™€μ˜ μ—°κ²° μ‹œλ„λ₯Ό ν•¨κ»˜ ν™•μΈν•©λ‹ˆλ‹€.

ν΄λ¦½λ³΄λ“œ ν•˜μ΄μž¬μ»€ 이해
ν΄λ¦½λ³΄λ“œ ν•˜μ΄μž¬μ»€λŠ” μ‚¬μš©μžκ°€ λ³΅μ‚¬ν•œ 값을 κ°μ‹œν•˜κ±°λ‚˜ λ‹€λ₯Έ κ°’μœΌλ‘œ λ°”κΎΈλ €λŠ” μœ ν˜•μ΄λ‹€.

ν΄λ¦½λ³΄λ“œ ν•˜μ΄μž¬μ»€ μœ ν˜•μ€ μ‚¬μš©μžκ°€ λ³΅μ‚¬ν•œ λ¬Έμžμ—΄μ„ κ°μ‹œν•˜λ‹€κ°€ μ§€κ°‘ μ£Όμ†Œμ²˜λŸΌ λ³΄μ΄λŠ” 값을 λ‹€λ₯Έ κ°’μœΌλ‘œ λ°”κΎΈλŠ” ν–‰μœ„μž…λ‹ˆλ‹€. μ‹€μ œ ν΄λ¦½λ³΄λ“œλ₯Ό λ³€κ²½ν•˜λŠ” μ‹€μŠ΅μ€ ν•˜μ§€ μ•Šκ³ , μƒ˜ν”Œ λ¬Έμžμ—΄μ„ κ²€μ‚¬ν•΄μ„œ β€œμ΄λŸ° νŒ¨ν„΄μ„ 노릴 수 μžˆλ‹€β€λŠ” μ›λ¦¬λ§Œ μ΄ν•΄ν•˜λ©΄ μΆ©λΆ„ν•©λ‹ˆλ‹€.

λ‹€μš΄λ‘œλ” μœ ν˜•μ€ μž‘μ€ ν”„λ‘œκ·Έλž¨μ΄ λ¨Όμ € μ‹€ν–‰λœ λ’€ μ™ΈλΆ€μ—μ„œ μΆ”κ°€ νŒŒμΌμ„ λ°›μ•„μ˜€λŠ” λ°©μ‹μž…λ‹ˆλ‹€. 이 경우 파일 생성 흔적, λ‹€μš΄λ‘œλ“œ URL, μ™ΈλΆ€ μ—°κ²°, μ‹€ν–‰ κ²½λ‘œκ°€ μ€‘μš”ν•œ λ‹¨μ„œκ°€ λ©λ‹ˆλ‹€. μžλ™μ‹€ν–‰ λ“±λ‘κΉŒμ§€ 이어지면 μž¬λΆ€νŒ… 후에도 계속 λ™μž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

IOCλž€ 무엇인가

IOC ꡬ성 지도
IOCλŠ” 파일λͺ…, ν”„λ‘œμ„ΈμŠ€, 도메인, IP, 포트, μžλ™μ‹€ν–‰ μœ„μΉ˜ 같은 μ˜μ‹¬ λ‹¨μ„œλ₯Ό λ¬Άμ–΄ λ³΄λŠ” κ°œλ…μ΄λ‹€.

IOCλŠ” Indicator of Compromise의 μ•½μžλ‘œ, μΉ¨ν•΄ λ˜λŠ” 이상 ν–‰μœ„λ₯Ό μ˜μ‹¬ν•  수 μžˆλŠ” 흔적을 λœ»ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ λ‚―μ„  파일λͺ…, μ΄μƒν•œ ν”„λ‘œμ„ΈμŠ€λͺ…, μ˜μ‹¬ 도메인, νŠΉμ • IP, 비정상 포트, μžλ™μ‹€ν–‰ λ ˆμ§€μŠ€νŠΈλ¦¬, λ°˜λ³΅λ˜λŠ” 였λ₯˜ λ‘œκ·Έκ°€ IOCκ°€ 될 수 μžˆμŠ΅λ‹ˆλ‹€.

IOCλŠ” λ‹¨λ…μœΌλ‘œ ν™•μ • 증거가 λ˜κΈ°λ³΄λ‹€ μ—¬λŸ¬ λ‹¨μ„œκ°€ ν•¨κ»˜ λͺ¨μΌ λ•Œ μ˜λ―Έκ°€ μ»€μ§‘λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ λ‚―μ„  ν”„λ‘œμ„ΈμŠ€ ν•˜λ‚˜λ§ŒμœΌλ‘œ 악성이라고 λ‹¨μ •ν•˜κΈ°λŠ” μ–΄λ ΅μ§€λ§Œ, κ·Έ ν”„λ‘œμ„ΈμŠ€κ°€ 높은 CPUλ₯Ό μ‚¬μš©ν•˜κ³ , λ‚―μ„  λ„λ©”μΈμœΌλ‘œ 주기적으둜 μ—°κ²°ν•˜κ³ , μžλ™μ‹€ν–‰μ—λ„ λ“±λ‘λ˜μ–΄ μžˆλ‹€λ©΄ μ˜μ‹¬λ„κ°€ 크게 μ˜¬λΌκ°‘λ‹ˆλ‹€.

IOCλ₯Ό κ³΅λΆ€ν•˜λŠ” λͺ©μ μ€ 암기보닀 λΆ„λ₯˜μž…λ‹ˆλ‹€. 파일 흔적인지, ν”„λ‘œμ„ΈμŠ€ 흔적인지, λ„€νŠΈμ›Œν¬ 흔적인지, μ‚¬μš©μž ν–‰μœ„ 흔적인지 κ΅¬λΆ„ν•˜λ©΄ 탐지 과정이 μ²΄κ³„μ μœΌλ‘œ λ³΄μž…λ‹ˆλ‹€.

μ‹œμŠ€ν…œ 흔적과 λ„€νŠΈμ›Œν¬ 흔적

μ‹œμŠ€ν…œ 흔적은 PC λ‚΄λΆ€μ—μ„œ 확인할 수 μžˆλŠ” λ‹¨μ„œμž…λ‹ˆλ‹€. μž‘μ—… κ΄€λ¦¬μž, λ¦¬μ†ŒμŠ€ λͺ¨λ‹ˆν„°, 이벀트 λ·°μ–΄, μžλ™μ‹€ν–‰ ν•­λͺ©, μ„€μΉ˜λœ ν”„λ‘œκ·Έλž¨, μž„μ‹œ 폴더, λ‹€μš΄λ‘œλ“œ 폴더 등을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

λ„€νŠΈμ›Œν¬ 흔적은 외뢀와 ν†΅μ‹ ν•˜λ €λŠ” λ‹¨μ„œμž…λ‹ˆλ‹€. μ–΄λ–€ 도메인을 μ‘°νšŒν–ˆλŠ”μ§€, μ–΄λ–€ IP와 μ—°κ²°ν–ˆλŠ”μ§€, μ–΄λ–€ 포트λ₯Ό μ‚¬μš©ν–ˆλŠ”μ§€, 주기적으둜 ν†΅μ‹ ν•˜λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. Wiresharkλ‚˜ λ°©ν™”λ²½ 둜그, DNS λ‘œκ·Έκ°€ 이런 ν•™μŠ΅μ— 도움이 λ©λ‹ˆλ‹€.

λ°©μ–΄ 관점 점검 μ˜ˆμ‹œ
- μž‘μ—… κ΄€λ¦¬μžμ—μ„œ CPU/GPU μ‚¬μš©λ₯  확인
- λ¦¬μ†ŒμŠ€ λͺ¨λ‹ˆν„°μ—μ„œ λ„€νŠΈμ›Œν¬ μ—°κ²° 확인
- 이벀트 λ·°μ–΄μ—μ„œ κ²½κ³ /였λ₯˜ 확인
- DNS λ‘œκ·Έμ—μ„œ λ‚―μ„  도메인 확인
- Wiresharkμ—μ„œ 반볡 μ—°κ²° 확인

μ•ˆμ „ν•œ ν•™μŠ΅ 원칙

초기 λŒ€μ‘ 체크리슀트
μ˜μ‹¬ μƒν™©μ—μ„œλŠ” 기둝, 뢄리, 보쑴, 점검 μˆœμ„œλ‘œ μ•ˆμ „ν•˜κ²Œ λŒ€μ‘ν•œλ‹€.

μ•…μ„±μ½”λ“œ ν•™μŠ΅μ€ λ°˜λ“œμ‹œ μ•ˆμ „ν•˜κ²Œ μ§„ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ‹€μ œ μ•…μ„±μ½”λ“œλ₯Ό λ‚΄λ €λ°›κ±°λ‚˜ μ‹€ν–‰ν•˜μ§€ μ•Šκ³ , κ°€μ§œ λ‘œκ·Έμ™€ μ„€λͺ…μš© μ˜ˆμ‹œλ‘œ κ°œλ…μ„ μ΅νž™λ‹ˆλ‹€. μ™ΈλΆ€ 곡격 μ„œλ²„λ‚˜ μ‹€μ œ ν”Όν•΄μž μ‹œμŠ€ν…œμ„ λŒ€μƒμœΌλ‘œ ν•œ μ‹€ν—˜λ„ ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

ν•™μŠ΅μš© μ˜ˆμ‹œλŠ” μœ„ν—˜ κΈ°λŠ₯을 μ œκ±°ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ‹€μ œ ν΄λ¦½λ³΄λ“œ λ³€κ²½, 파일 μ•”ν˜Έν™”, 계정 정보 μˆ˜μ§‘, μ™ΈλΆ€ μ„œλ²„ 전솑 κΈ°λŠ₯은 λ§Œλ“€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λŒ€μ‹  β€œμ΄λŸ° ν–‰μœ„κ°€ μžˆλ‹€λ©΄ μ–΄λ–€ 흔적이 λ‚¨λŠ”κ°€β€λ₯Ό μ•ˆμ „ν•˜κ²Œ μ„€λͺ…ν•˜λŠ” 방식이 μ’‹μŠ΅λ‹ˆλ‹€.

이 μž₯의 λͺ©μ μ€ μ•…μ„±μ½”λ“œ μ œμž‘μ΄ μ•„λ‹ˆλΌ λ°©μ–΄ κ΄€μ μ˜ μ΄ν•΄μž…λ‹ˆλ‹€. μ‹€μ œ μ•…μ„± 파일 μ‹€ν–‰, 유포, μ™ΈλΆ€ 톡신 μ‹€ν—˜μ€ ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

κ°œλ… λΉ„κ΅ν‘œ

κ°œλ…μ˜λ―Έν•™μŠ΅ 포인트
크립토 λ§ˆμ΄λ„ˆμžμ›μ„ λͺ°λž˜ μ‚¬μš©CPU/GPU μ‚¬μš©λ₯ κ³Ό μ™ΈλΆ€ μ—°κ²°
ν΄λ¦½λ³΄λ“œ ν•˜μ΄μž¬μ»€λ³΅μ‚¬ν•œ 값을 κ°μ‹œν•˜κ±°λ‚˜ λ°”κΏˆλ¬Έμžμ—΄ νŒ¨ν„΄κ³Ό μ‚¬μš©μž 주의
λ‹€μš΄λ‘œλ”μΆ”κ°€ νŒŒμΌμ„ λ‚΄λ €λ°›μŒλ‹€μš΄λ‘œλ“œ URLκ³Ό 파일 생성 흔적
IOCμΉ¨ν•΄ μ˜μ‹¬ λ‹¨μ„œνŒŒμΌ, ν”„λ‘œμ„ΈμŠ€, λ„€νŠΈμ›Œν¬ 흔적 λΆ„λ₯˜

핡심 κ°œλ… 볡슡

μ•…μ„± ν–‰μœ„λ₯Ό μ΄ν•΄ν•˜λŠ” 핡심은 행동과 흔적을 μ—°κ²°ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. μžμ›μ„ 많이 μ“°λ©΄ CPU μ‚¬μš©λ₯ μ΄ 였λ₯΄κ³ , 외뢀와 ν†΅μ‹ ν•˜λ©΄ λ„€νŠΈμ›Œν¬ 연결이 생기고, μž¬λΆ€νŒ… 후에도 μ‹€ν–‰λ˜λ €λ©΄ μžλ™μ‹€ν–‰ 흔적이 남을 수 μžˆμŠ΅λ‹ˆλ‹€.

νƒμ§€λŠ” ν•œ κ°€μ§€ λ‹¨μ„œλ§Œ 보고 결둠을 λ‚΄λ¦¬λŠ” 일이 μ•„λ‹™λ‹ˆλ‹€. μ‹œμŠ€ν…œ 흔적, λ„€νŠΈμ›Œν¬ 흔적, μ‚¬μš©μž 증상, 둜그λ₯Ό ν•¨κ»˜ λ³΄λ©΄μ„œ κ°€λŠ₯성을 μ’ν˜€ κ°‘λ‹ˆλ‹€. 이 과정을 μ΄ν•΄ν•˜λ©΄ μ‹€μ œ λ³΄μ•ˆ 도ꡬ가 μ™œ 파일 ν•΄μ‹œ, 도메인, IP, ν–‰μœ„ νŒ¨ν„΄μ„ ν•¨κ»˜ λ³΄λŠ”μ§€λ„ μžμ—°μŠ€λŸ½κ²Œ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒ μž₯μ—μ„œλŠ” Python을 μ΄μš©ν•΄ λ³΄μ•ˆ κ°œλ…μ„ μ•ˆμ „ν•˜κ²Œ μžλ™ν™”ν•˜κ³ , λ‘œκ·Έλ‚˜ λ¬Έμžμ—΄μ„ λΆ„μ„ν•˜λŠ” 기초λ₯Ό κ³΅λΆ€ν•©λ‹ˆλ‹€.