jyamethyst21 님의 블로그

생성형AI를 활용한 악성코드 분석 및 대응 본문

보안 & IT 지식 🌺

생성형AI를 활용한 악성코드 분석 및 대응

jyamethyst21 2026. 3. 31. 17:10

운영체제 보안 도구 및 분석 기법

구분 PowerShell Batch Script Excel VBA
주용도 복합 엔지니어링, EDR 활용, 침해사고 대응 로그 수집, 간단한 보안 설정 변경 이메일 해킹(OLE), 파일리스 악성코드
특징 전역 명령어 사용, 복잡한 설계 가능 단순 문법, 파일 내 실행 한정 비주얼 베이직 기반, MS 오피스 연동
분석 가치 핵심 아티팩트(증거물) 제공 배포 및 단순 자동화 흔적 매크로를 통한 악성코드 유포 분석

 

파워쉘(PowerShell) 기반 위협 탐지

  • 파일리스(Fileless) 악성코드: 디스크에 파일을 남기지 않고 메모리에서 파워쉘로 실행되는 공격 급증
  • 주요 분석 대상
    • DNS 호출 및 프로세스 은닉 여부
    • 네트워크 스캐닝 및 특정 포트 활성화
    • DLL 패킹 및 프로세스 후킹 흔적

 

패스워드 크래킹 및 암호화 실무

안전한 패스워드 설정 원칙

  • 조합 규칙: 3종류 혼합 시 8자리 이상, 2종류 혼합 시 10자리 이상 권장
  • 난수 생성: 단순 함수가 아닌 국정원 인증 난수발생기(PRNG) 적용 필수
  • 패턴 방지: 사이트별 독립적 패스워드 사용 (본인만의 규칙 적용 권장)

일방향 및 양방향 암호화 비교

일방향 암호화 (Hash): 비밀번호 저장용, 복호화 불가능

  • 알고리즘: MD5, SHA-1, SHA-2(256/512), SHA-3
  1. 양방향 암호화: 데이터 전송/저장용. 키(Key)를 통한 복호화 가능
    • 알고리즘: AES, ARIA, SEED

솔트 적용의 중요성

  • 카카오페이 사례: SHA-256 사용에도 불구하고 '솔트' 미적용으로 인한 보안성 논란 발생
  • 최신 가이드라인: 개인정보 안전성 확보조치 안내서에 따라 비밀번호 암호화 시 솔트 적용이 반강제적 필수 사항으로 강화됨

 

해시 알고리즘과 보안 취약점

해시 알고리즘의 안전성

  • 취약한 알고리즘: MD5, SHA-0, SHA-1은 이미 충돌이 발견되어 보안상 취약함
  • 권장 알고리즘: 현재 SHA-2(224, 256, 384, 512)가 주로 사용되나, 미래를 대비해 SHA-3로 전환되는 추세임
  • Salt: 패스워드 크래킹을 방어하기 위한 필수 요소, 시스템 전체에 일관성 있게 적용되어야 하며, 미적용 시 보안 취약점으로 간주함

패스워드 크래킹 기술의 진화

  • 사전 대입 공격(Dictionary Attack): 다크웹을 통해 수천억 건의 패스워드 사전이 공유/교차 구매되어 공격 성공률이 매우 높아짐
  • 레인보우 테이블(Rainbow Table): 해시 체인을 미리 만들어둔 테이블. R 함수(Reduction Function)를 통해 테이블 크기를 소형화하여 효율적으로 공격에 활용함
  • 방어 기계
    • 패스워드 임계값 설정(로그인 실패 시 차단)
    • AWS Cognito 등 최신 서비스는 해커의 시도를 방해하기 위해 잠금 횟수를 랜덤하게 설정함

 

윈도우(Windows) 인증 구조

주요 구성 요소

  • LSA (Local Security Authority): 모든 계정 로그인 검증 및 SID(보안 식별자) 매칭
  • SAM (Security Account Manager): 사용자/그룹 계정 정보 DB 관리, 패스워드 해시가 저장되는 파일
  • SRM (Security Reference Monitor): 접근 허용 여부 결정 및 이벤트 로깅

로컬 인증 vs 도메인 인증

  • 로컬 인증: 네트워크 연결이 없는 상태에서 PC 내부의 캐시 데이터를 이용해 인증
  • 도메인 인증: AD(Active Directory) 및 DC(Domain Controller) 와 연동하여 커버로스(Kerberos) 알고리즘으로 인증 수행

NTLM 인증 방식

  • 챌린지-리스폰스(Challenge-Response): 서버가 문제를 내고 클라이언트가 답하는 방식
  • 프로세스: 대문자 변환 → 패딩(Padding) 추가 → 분할 → DES 암호화 → 결합 및 전달

 

제로 트러스트(Zero Trust)와 통합 인증

확장된 인증 모델

  • 기존 인증 단계에 컨텍스트 분석 단계 추가
  • 검증 요소: IP 위치, 시간대, 단말기 상태, 프로세스 부모-자식 관계, EDR 패치 여부 등
  • 모든 조건이 충족되어야만 DC가 토큰을 발행하는 구조로, 보안성이 대폭 강화됨

자격증명 캐시의 위험성

  • 네트워크 미연결 시 로그인을 위해 생성된 캐시가 메모리 덤프 공격의 타겟이 됨
  • 해커는 이 캐시를 추출하여 횡적 이동(Lateral Movement)에 악용함

 

유닉스/리눅스(Unix/Linux) 인증 및 위험 평가

 /etc/shadow 파일 구조

  • 패스워드 해시 및 보안 정책이 저장됨
  • 해시 식별자
    • $1$: MD5 (취약)
    • $5$: SHA-256 (안전)
    • $6$: SHA-512 (안전)

위험 평가 기반의 정책 설정

  • 패스워드 변경 주기(예: 30일, 60일, 90일)는 자산의 중요도에 따라 결정해야 함
  • CIA 평가 기준: 기밀성(C), 무결성(I), 가용성(A) 점수를 합산하여 자산 등급을 분류하고, 등급에 맞는 보안 정책을 일관성 있게 적용

VBA 로 Powershell 제어 (프로세스 PID 수집)

Excel VBA 코드 하나로 PowerShell 파일을 생성, 복제, 관리자 권한 실행까지 자동화하고, 현재 PC에서 실행 중인 프로세스 PID 목록을 텍스트 파일로 저장하는 실습을 진행하였다.

VBA 실행
  │
  ├── 1. VBA 안에 작성된 PS1 코드를 파일로 생성
  │           → collect_pid.ps1 (다운로드 폴더)
  │
  ├── 2. 생성된 파일 복제 + 이름 변경
  │           → collect_pid_copy.ps1 (다운로드 폴더)
  │
  ├── 3. 복제본을 관리자 권한으로 실행
  │           → UAC 창 표시 → [예] 클릭
  │
  └── 4. PS1 내부 코드가 PID 수집 후 TXT 저장
              → process_list.txt (바탕화면)

 

구분 역할
VBA PS1 파일 생성, 복제, 실행 요청(트리거)
PowerShell 실제 시스템 정보 수집 및 파일 저장
Windows UAC 커널 접근 전 관리자 권한 확인

 

VBA는 엑셀 전용 언어가 아니라 Windws 위에서 동작하는 스크립트 언어이기 때문에 Windows API인 CreateProcess()를 호출할 수 있다, 그래서 VBA 코드로도 충분히 관리자 권한 호출(파워셸 실행) 후 파워셸 구문으로 PID 확인이 가능하다.

결과 예시

 

프로세스 확인하는 정도의 VBA 코드는 공유 가능할 것 같긴 하지만.. 혹시 모르는 일이 생길 수 있으니 추가로 공유하진 않을 예정이다.

다만, 이와 같이 VBA 매크로를 포함하고 있는 Word, Excel 등의 파일로 인해 발생하는 사고가 꽤나 많다는 점이 핵심이다.

 

이모텟(Emotet) 악성코드

 

대표적으로 Emotet 악성코드가 있다.

해당 악성 VBA 매크로는 WMI를 통해 powershell을 실행하여 Emotet 악성코드를 다운로드하고 Word 파일을 실행하게 되면 VBA를 실행하도록 유도하는 문구의 그림이 존재한다. 유도 문구는 하기와 같이 다양한 형태로 유포되고 있다.

https://asec.ahnlab.com/ko/1252/

 

18년도 Emotet 악성코드를 유포하던 VBA 매크로는 cmd를 통해 powershell을 실행한 반면 19년도에 유포 중인 매크로는 WMI(winmgmts:Win32_Process)를 통해 powershell 을 실행하는 방식으로 변경되었다고 한다. 변경 전 실행 방식이 필자가 이번에 실습한 매크로를 통한 Powershell 실행 방식과 동일하다.

(출처: https://asec.ahnlab.com/ko/1252/)

 

이처럼 생각보다도 워드나 엑셀에 매크로가 붙어서 실행될 수 있는 취약점이 많은 것 같다.