<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>MZ COMPANY</title>
    <link>https://mzcompany.tistory.com/</link>
    <description>KITRI Best of the Best 14th 디지털포렌식 트랙 'MZ COMPANY' 팀블로그입니다.</description>
    <language>ko</language>
    <pubDate>Tue, 2 Jun 2026 06:14:52 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>엠지컴퍼니</managingEditor>
    <item>
      <title>Direwolf 랜섬웨어 분석 보고서</title>
      <link>https://mzcompany.tistory.com/17</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 개요 (Overview)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.1 분석 배경&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Direwolf 랜섬웨어는 &lt;b&gt;2025년 5월&lt;/b&gt; 처음 발견된 Golang 기반 폐쇄형(Closed-Group) 랜섬웨어로, &lt;b&gt;Curve25519 기반 Diffie-Hellman 키 교환 및 ChaCha20 스트림 암호화&lt;/b&gt;를 통해 파일을 암호화합니다.&lt;br /&gt;파일 확장자는 .direwolf로 변경되며, &lt;b&gt;데이터 암호화 + 유출 협박(이중 갈취, double extortion)&lt;/b&gt;을 수행합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.2 핵심 요약&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;암호화 체인 :&lt;/b&gt; ECDH (Curve25519) + SHA-256 (2회) + ChaCha20&lt;/li&gt;
&lt;li&gt;&lt;b&gt;키 생성 :&lt;/b&gt; 파일별 독립적인 임시 ECDH 키쌍 (RtlGenRandom)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;최적화 :&lt;/b&gt; 1MB 초과 파일은 첫 1MB만 암호화&lt;/li&gt;
&lt;li&gt;&lt;b&gt;푸터 구조 :&lt;/b&gt; 38바이트 (임시 공개키 32B + 시그니처 6B)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;암호화 메커니즘&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;983&quot; data-start=&quot;943&quot;&gt;&lt;b&gt;Curve25519&lt;/b&gt; 기반 ECDH로 파일별 공유 비밀 생성&lt;/li&gt;
&lt;li data-end=&quot;1016&quot; data-start=&quot;984&quot;&gt;공유 비밀 &amp;rarr; SHA-256 해시 &amp;rarr; 세션 키 도출&lt;/li&gt;
&lt;li data-end=&quot;1090&quot; data-start=&quot;1017&quot;&gt;도출된 세션 키로 &lt;b&gt;ChaCha20&lt;/b&gt; 스트림 암호화 수행&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;암호화 워크플로우&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770630568328&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Step 1: 임시 ECDH 키쌍 생성 (파일별)
temp_privkey = RtlGenRandom(32 bytes)
temp_pubkey = Curve25519.ScalarBaseMult(temp_privkey)

// Step 2: 공유 비밀 생성
shared_secret = Curve25519.ScalarMult(temp_privkey, attacker_pubkey)

// Step 3: 키 파생 (이중 SHA-256)
hash1 = SHA256(shared_secret)          // ChaCha20 키
hash2 = SHA256(hash1)                  // Nonce 추출용

chacha20_key = hash1[0:32]
chacha20_nonce = hash2[10:22]          // 12바이트

// Step 4: 파일 암호화
ciphertext = ChaCha20(plaintext, chacha20_key, chacha20_nonce)

// Step 5: 메타데이터 추가
footer = temp_pubkey (32B) + signature (6B: 0xABBCCDDEEFF0)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 2. 식별 정보 (Identification)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 161px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;값&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;Malware Family&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;Direwolf Ransomware&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;Filetype&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;PE64 (Windows 64-bit Executable, Golang)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;Hash (SHA256)&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;7f877830ebafb0b809b96bac7baf4435e235ab7835f695006ff779e6178c3638&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;Hash (MD5)&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;bc6912c853be5907438b4978f6c49e43&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;Size&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;2,096,128 bytes (0x1ffc00)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;Extension&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;.direwolf&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;Target&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;Windows 기반 시스템&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;Ransom Note&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;README_TO_DECRYPT.txt&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;2.1 패킹 분석 (Packing Analysis) &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;b&gt;값&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Packer&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;UPX 3.96 (Ultimate Packer for eXecutables)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Original Size&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;~6.2 MB (언패킹 전 추정)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Packed Size&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;2,096,128 bytes (0x1ffc00)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;압축률&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;약 66.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Entropy&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;7.4+ (높은 엔트로피 - 패킹 지표)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2.1.1 UPX 탐지 시그니처&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- PE 섹션명 : UPX0, UPX1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Import Table : 최소화됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Entry Point : UPX stub&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2.1.2 언패킹 절차&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. UPX 탐지 : 'upx -t sample.exe'&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 자동 언패킹 : 'upx -d sample.exe -o unpacked.exe'&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. IDA 분석 : 언패킹된 바이너리 로드&lt;/p&gt;
&lt;p data-end=&quot;1382&quot; data-start=&quot;1370&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-end=&quot;1382&quot; data-start=&quot;1370&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2.2 최초 실행 검사&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1547&quot; data-start=&quot;1383&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1423&quot; data-start=&quot;1383&quot;&gt;&lt;b&gt;Mutex :&lt;/b&gt; Global\direwolfAppMutex&lt;/li&gt;
&lt;li data-end=&quot;1547&quot; data-start=&quot;1424&quot;&gt;&lt;b&gt;탐지 마커 파일 :&lt;/b&gt; C:\runfinish.exe (이미 암호화된 시스템을 체크)&lt;br /&gt;&amp;rArr; 둘 중 하나가 존재하면 &lt;b&gt;자기 삭제 + 종료&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 3. 분석 환경 및 도구 (Tools)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;도구명 (Tool)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;용도 (Purpose)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;정적 분석&lt;/td&gt;
&lt;td&gt;IDA Pro&lt;/td&gt;
&lt;td&gt;Golang 바이너리 디컴파일 및 암호화 로직 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;동적 분석&lt;/td&gt;
&lt;td&gt;API Monitor&lt;/td&gt;
&lt;td&gt;RtlGenRandom API 후킹 및 키 추출&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;행위 분석&lt;/td&gt;
&lt;td&gt;Process Monitor&lt;/td&gt;
&lt;td&gt;파일 I/O 및 암호화 행위 추적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;암호 분석&lt;/td&gt;
&lt;td&gt;Python + cryptography&lt;/td&gt;
&lt;td&gt;ChaCha20 복호화 스크립트 개발&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;라이브러리&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://golang.org/x/crypto&quot;&gt;golang.org/x/crypto&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Curve25519, ChaCha20 구현 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 암호화 기술 분석 (Technical Analysis)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.1 전체 암호화 워크플로우&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1770630657669&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[실행 단계]

1. 초기화
   - Windows CSP 획득
   - RtlGenRandom 초기화
   - 공격자 공개키 로드 (0x5E12E0)
   &amp;darr;

2. 파일 탐색
   - 재귀적 디렉터리 스캔
   - .direwolf, .exe, .dll 제외
   - 고루틴으로 병렬 처리
   &amp;darr;

3. 파일별 암호화
   [Step 1: 임시 키쌍 생성]
   temp_privkey = RtlGenRandom(32 bytes)
   temp_pubkey = Curve25519
   &amp;darr;
   
   [Step 2: ECDH 공유 비밀]
   shared_secret = Curve25519.ScalarMult(temp_privkey, attacker_pubkey)
   &amp;darr;
   
   [Step 3: 키 파생]
   hash1 = SHA256(shared_secret)
   hash2 = SHA256(hash1)
   chacha20_key = hash1[0:32]
   chacha20_nonce = hash2[10:22]
   &amp;darr;
   
   [Step 4: ChaCha20 암호화]
   if file_size &amp;gt; 1MB:
       encrypt_size = 1MB
   else:
       encrypt_size = file_size
   
   ciphertext = ChaCha20(plaintext, chacha20_key, chacha20_nonce)
   &amp;darr;
   
   [Step 5: 푸터 추가]
   footer = temp_pubkey (32B) + signature (0xABBCCDDEEFF0, 6B)
   &amp;darr;

4. 파일명 변경
   - 원본.확장자 &amp;rarr; 원본.확장자.direwolf
   - README_TO_DECRYPT.txt 생성&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.2 키 생성 및 관리 (Key Generation)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.2.1 임시 키쌍 생성 (Per-File)&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770630691180&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;v185 = runtime_makeslice(&amp;amp;RTYPE_uint8, 32, 32, ...);
io_ReadAtLeast(qword_5FDF30, qword_5FDF38, v185, 32, 32, 32, ...);
// &amp;rarr; RtlGenRandom으로 32바이트 생성 (임시 개인키)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;특징:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Windows RtlGenRandom (SystemFunction036) API 사용&lt;/li&gt;
&lt;li&gt;CSPRNG (Cryptographically Secure PRNG)&lt;/li&gt;
&lt;li&gt;각 파일마다 독립적인 32바이트 개인키&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt; 4.2.2 공격자 공개키&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770630732791&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 임시 공개키 생성
golang_org_x_crypto_curve25519_scalarBaseMult(
    v176,           // output: 임시 공개키 (32 bytes)
    v177,           // input: 임시 개인키 (32 bytes)
    ...
);

// 공유 비밀 생성
golang_org_x_crypto_curve25519_scalarMult(
    v174,           // output: 공유 비밀 (32 bytes)
    v177,           // input: 임시 개인키 (32 bytes)
    &amp;amp;unk_5E12E0,    // input: 공격자 공개키 (32 bytes)
    ...
);&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1770630741261&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;수학적 원리:

G: Curve25519 생성점

임시 공개키 = G &amp;times; 임시_개인키
공유 비밀 = 공격자_공개키 &amp;times; 임시_개인키
= (G &amp;times; 공격자_개인키) &amp;times; 임시_개인키
= G &amp;times; (공격자_개인키 &amp;times; 임시_개인키)&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.4 키 파생 (Key Derivation)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.4.1 이중 SHA-256&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770630762465&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 첫 번째 SHA-256
crypto_sha256_Sum256(v174, 32, 32, ...);  // input: 공유 비밀
*(_OWORD *)v179 = v120;                    // output: hash1

// 두 번째 SHA-256
crypto_sha256_Sum256(v179, 32, 32, ...);  // input: hash1
v178[0] = v121;                            // output: hash2
v178[1] = v146;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;키 파생 과정:&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770630780342&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;hash1 = SHA256(shared_secret)      # 32 bytes &amp;rarr; ChaCha20 Key
hash2 = SHA256(hash1)               # 32 bytes &amp;rarr; Nonce 추출용

chacha20_key = hash1[0:32]          # 전체 32바이트
chacha20_nonce = hash2[10:22]       # 오프셋 10부터 12바이트&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;왜 두 번 해시하는가?&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;키 분리 (Key Separation) :&lt;/b&gt; 암호화 키와 Nonce를 독립적으로 파생&lt;/li&gt;
&lt;li&gt;&lt;b&gt;추가 엔트로피 :&lt;/b&gt; 보안성 강화&lt;/li&gt;
&lt;li&gt;&lt;b&gt;HKDF 대체 :&lt;/b&gt; 간단한 구현&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.5 ChaCha20 암호화&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.5.1 ChaCha20 초기화&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770630807675&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;golang_org_x_crypto_chacha20_newUnauthenticatedCipher(
    &amp;amp;v181,              // cipher 객체
    v179,               // 키: hash1 (32 bytes)
    32,
    32,
    v178 + 10,          // Nonce: hash2[10:22] (12 bytes)
    12,
    ...
);&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1770630816172&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;파라미터:
Algorithm: ChaCha20 (20 rounds)
Key Size:  256 bits (32 bytes)
Nonce Size: 96 bits (12 bytes)
Counter:   32 bits (4 bytes, 초기값 0)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.5.2 파일 크기 기반 최적화&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770630830687&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;v76 = v172;                    // v172 = 원본 파일 크기
if (v172 &amp;gt; 0x100000)          // 1MB = 1,048,576 bytes
    v76 = 0x100000;           // 1MB로 제한
v171 = v76;                   // 실제 암호화 크기&lt;/code&gt;&lt;/pre&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 45.814%;&quot;&gt;&lt;b&gt;파일 크기&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 54.0698%;&quot;&gt;&lt;b&gt;암호화 범위&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 45.814%;&quot;&gt;&amp;le; 1MB&lt;/td&gt;
&lt;td style=&quot;width: 54.0698%;&quot;&gt;전체 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 45.814%;&quot;&gt;&amp;gt; 1MB&lt;/td&gt;
&lt;td style=&quot;width: 54.0698%;&quot;&gt;첫 1MB만&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.6 파일 처리 아키텍처&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.6.1 암호화된 파일 구조&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;영역&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;크기&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;암호화된 데이터&lt;/td&gt;
&lt;td&gt;원본 크기 (max 1MB)&lt;/td&gt;
&lt;td&gt;ChaCha20으로 암호화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Footer (38 bytes)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;└─ 임시 공개키&lt;/td&gt;
&lt;td&gt;32 bytes&lt;/td&gt;
&lt;td&gt;복호화 시 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;└─ 시그니처&lt;/td&gt;
&lt;td&gt;6 bytes&lt;/td&gt;
&lt;td&gt;0xABBCCDDEEFF0 (식별용)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.6.2 메타데이터 추가&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770630898371&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 1. 임시 공개키 쓰기
os__ptr_File_WriteAt(
    v183,           // file handle
    v176,           // 임시 공개키 (32 bytes)
    32, 32,
    v172,           // offset: 파일 크기
    ...
);

// 2. 시그니처 쓰기
v169 = -556942165;  // 0xDECDBCAB (LE) &amp;rarr; 0xABBCCDDE
v170 = -3857;       // 0xF0EF (LE) &amp;rarr; 0xEFF0

os__ptr_File_WriteAt(
    v183,
    &amp;amp;v169,          // 시그니처 (6 bytes)
    6, 6,
    v172 + 32,      // offset: 파일 크기 + 32
    ...
);&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; &lt;span data-token-index=&quot;0&quot;&gt;4.7 정적 분석&lt;/span&gt; &lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; runtime.main 함수&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;nanotime 초기화 (프로그램 시작 시간 기록)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1392&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cD369B/dJMcadgB7Wv/kFh1C6iktT6NdK55Lv0u9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cD369B/dJMcadgB7Wv/kFh1C6iktT6NdK55Lv0u9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cD369B/dJMcadgB7Wv/kFh1C6iktT6NdK55Lv0u9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcD369B%2FdJMcadgB7Wv%2FkFh1C6iktT6NdK55Lv0u9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1392&quot; height=&quot;17&quot; data-origin-width=&quot;1392&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;런타임 초기화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1367&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEQSOE/dJMcabQCVJB/IUoPnJmtx7E7EQSMV0esi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEQSOE/dJMcabQCVJB/IUoPnJmtx7E7EQSMV0esi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEQSOE/dJMcabQCVJB/IUoPnJmtx7E7EQSMV0esi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEQSOE%2FdJMcabQCVJB%2FIUoPnJmtx7E7EQSMV0esi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1367&quot; height=&quot;20&quot; data-origin-width=&quot;1367&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;가비지 컬렉터 활성화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1031&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjx0Xs/dJMb996mHPG/oucBvchSNdyxrXHnswRrKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjx0Xs/dJMb996mHPG/oucBvchSNdyxrXHnswRrKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjx0Xs/dJMb996mHPG/oucBvchSNdyxrXHnswRrKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcjx0Xs%2FdJMb996mHPG%2FoucBvchSNdyxrXHnswRrKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1031&quot; height=&quot;20&quot; data-origin-width=&quot;1031&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;main.main 함수 호출 (랜섬웨어 실행 시작점)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brZAmt/dJMcacINzsx/cfRcAs8XnLzbUiQ3vzOto1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brZAmt/dJMcacINzsx/cfRcAs8XnLzbUiQ3vzOto1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brZAmt/dJMcacINzsx/cfRcAs8XnLzbUiQ3vzOto1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrZAmt%2FdJMcacINzsx%2FcfRcAs8XnLzbUiQ3vzOto1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1027&quot; height=&quot;17&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로그램 종료 전 정리 작업&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1157&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HbxR8/dJMcagEq5EF/78h8Dlhg4Q1ItNQ7BZKlE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HbxR8/dJMcagEq5EF/78h8Dlhg4Q1ItNQ7BZKlE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HbxR8/dJMcagEq5EF/78h8Dlhg4Q1ItNQ7BZKlE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHbxR8%2FdJMcagEq5EF%2F78h8Dlhg4Q1ItNQ7BZKlE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1157&quot; height=&quot;20&quot; data-origin-width=&quot;1157&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로세스 종료&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1028&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0fUmp/dJMcafMiu0r/fNrCBqNHnT99NpzfIkmp1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0fUmp/dJMcafMiu0r/fNrCBqNHnT99NpzfIkmp1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0fUmp/dJMcafMiu0r/fNrCBqNHnT99NpzfIkmp1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0fUmp%2FdJMcafMiu0r%2FfNrCBqNHnT99NpzfIkmp1K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1028&quot; height=&quot;18&quot; data-origin-width=&quot;1028&quot; data-origin-height=&quot;18&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; main.main 함수&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;명령줄 인자 파싱 (-p 옵션 : 프로세스 경로)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;161&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m4vj8/dJMcaiCcIaY/RfVxav4gahtUEtU57fWwb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m4vj8/dJMcaiCcIaY/RfVxav4gahtUEtU57fWwb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m4vj8/dJMcaiCcIaY/RfVxav4gahtUEtU57fWwb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm4vj8%2FdJMcaiCcIaY%2FRfVxav4gahtUEtU57fWwb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1017&quot; height=&quot;161&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;161&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;중복 실행 체크&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;22&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/J1lbR/dJMcahQRar3/cttN7wn0lifNK1JtEVQgxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/J1lbR/dJMcahQRar3/cttN7wn0lifNK1JtEVQgxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/J1lbR/dJMcahQRar3/cttN7wn0lifNK1JtEVQgxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ1lbR%2FdJMcahQRar3%2FcttN7wn0lifNK1JtEVQgxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1017&quot; height=&quot;22&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;22&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;완료 마커 파일 존재 여부 확인 (C:\BGDKecuqlc2d9akd.exe)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1378&quot; data-origin-height=&quot;41&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CeJZq/dJMcafMiu1j/TizqtXQb3LmEKguI9ywAd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CeJZq/dJMcafMiu1j/TizqtXQb3LmEKguI9ywAd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CeJZq/dJMcafMiu1j/TizqtXQb3LmEKguI9ywAd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCeJZq%2FdJMcafMiu1j%2FTizqtXQb3LmEKguI9ywAd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1378&quot; height=&quot;41&quot; data-origin-width=&quot;1378&quot; data-origin-height=&quot;41&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1511&quot; data-origin-height=&quot;56&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/94Aff/dJMcaaEdieF/wpqMAXZRn2V0pzJ76ZNq1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/94Aff/dJMcaaEdieF/wpqMAXZRn2V0pzJ76ZNq1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/94Aff/dJMcaaEdieF/wpqMAXZRn2V0pzJ76ZNq1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F94Aff%2FdJMcaaEdieF%2FwpqMAXZRn2V0pzJ76ZNq1K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1511&quot; height=&quot;56&quot; data-origin-width=&quot;1511&quot; data-origin-height=&quot;56&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;뮤텍스 열기 시도 (Global\BGDKecuqlc2d9akd)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1472&quot; data-origin-height=&quot;37&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpezEF/dJMcabXoQPe/ODA48VPPImRhq4qGVqhiI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpezEF/dJMcabXoQPe/ODA48VPPImRhq4qGVqhiI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpezEF/dJMcabXoQPe/ODA48VPPImRhq4qGVqhiI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpezEF%2FdJMcabXoQPe%2FODA48VPPImRhq4qGVqhiI0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1472&quot; height=&quot;37&quot; data-origin-width=&quot;1472&quot; data-origin-height=&quot;37&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1357&quot; data-origin-height=&quot;78&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nR2F6/dJMcahceTyd/AJzg1p6tqu2yidZX0enp41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nR2F6/dJMcahceTyd/AJzg1p6tqu2yidZX0enp41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nR2F6/dJMcahceTyd/AJzg1p6tqu2yidZX0enp41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnR2F6%2FdJMcahceTyd%2FAJzg1p6tqu2yidZX0enp41%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1357&quot; height=&quot;78&quot; data-origin-width=&quot;1357&quot; data-origin-height=&quot;78&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;고루틴 시작&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1308&quot; data-origin-height=&quot;80&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bd1duz/dJMcajnyeWb/r2fNg1IBnJSvGOf0vhYdBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bd1duz/dJMcajnyeWb/r2fNg1IBnJSvGOf0vhYdBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bd1duz/dJMcajnyeWb/r2fNg1IBnJSvGOf0vhYdBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd1duz%2FdJMcajnyeWb%2Fr2fNg1IBnJSvGOf0vhYdBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1308&quot; height=&quot;80&quot; data-origin-width=&quot;1308&quot; data-origin-height=&quot;80&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1356&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTMwaZ/dJMcagYHZ1p/sET41CaZtHbqtwbKGboEoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTMwaZ/dJMcagYHZ1p/sET41CaZtHbqtwbKGboEoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTMwaZ/dJMcagYHZ1p/sET41CaZtHbqtwbKGboEoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTMwaZ%2FdJMcagYHZ1p%2FsET41CaZtHbqtwbKGboEoK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1356&quot; height=&quot;18&quot; data-origin-width=&quot;1356&quot; data-origin-height=&quot;18&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1438&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/My0oA/dJMcaf6zzh5/4UuG9ZWA3gFBeapXMcjE00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/My0oA/dJMcaf6zzh5/4UuG9ZWA3gFBeapXMcjE00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/My0oA/dJMcaf6zzh5/4UuG9ZWA3gFBeapXMcjE00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMy0oA%2FdJMcaf6zzh5%2F4UuG9ZWA3gFBeapXMcjE00%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1438&quot; height=&quot;17&quot; data-origin-width=&quot;1438&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1770631127055&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Close_Service : 백업/보안 서비스 종료
Close_Log : 로그 서비스 종료
Clear_Recover : 섀도우 카피/백업 삭제
Close_Process : DB/백업 프로세스 종료
main.main.func1 -&amp;gt; TraverseDisk : 디스크 순회 및 암호화
main.main.func2 : 암호화 진행 상황 모니터링 - 주기적 로깅&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;2초 대기 (서비스 종료 시간 확보)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1103&quot; data-origin-height=&quot;15&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmgoxE/dJMcac9NxJE/7qZk1fuazYkxDPbwyA3Gw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmgoxE/dJMcac9NxJE/7qZk1fuazYkxDPbwyA3Gw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmgoxE/dJMcac9NxJE/7qZk1fuazYkxDPbwyA3Gw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmgoxE%2FdJMcac9NxJE%2F7qZk1fuazYkxDPbwyA3Gw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1103&quot; height=&quot;15&quot; data-origin-width=&quot;1103&quot; data-origin-height=&quot;15&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;WaitGroup 생성 (병렬 암호화 동기화용)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1355&quot; data-origin-height=&quot;136&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHn2gh/dJMcac23ooI/LQfF0HreAma8rEAZLpKaR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHn2gh/dJMcac23ooI/LQfF0HreAma8rEAZLpKaR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHn2gh/dJMcac23ooI/LQfF0HreAma8rEAZLpKaR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHn2gh%2FdJMcac23ooI%2FLQfF0HreAma8rEAZLpKaR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1355&quot; height=&quot;136&quot; data-origin-width=&quot;1355&quot; data-origin-height=&quot;136&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시스템 강제 재부팅 (10초 후)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1071&quot; data-origin-height=&quot;397&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vUlxh/dJMcabiPisN/c6mclh9djg8Pk4DP3RNJs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vUlxh/dJMcabiPisN/c6mclh9djg8Pk4DP3RNJs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vUlxh/dJMcabiPisN/c6mclh9djg8Pk4DP3RNJs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvUlxh%2FdJMcabiPisN%2Fc6mclh9djg8Pk4DP3RNJs1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1071&quot; height=&quot;397&quot; data-origin-width=&quot;1071&quot; data-origin-height=&quot;397&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;랜섬웨어 실행 파일 삭제 (3초 후)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1023&quot; data-origin-height=&quot;577&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHIz1U/dJMcabpBe19/pJdc7vmm8V0KGXaHzKTmm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHIz1U/dJMcabpBe19/pJdc7vmm8V0KGXaHzKTmm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHIz1U/dJMcabpBe19/pJdc7vmm8V0KGXaHzKTmm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHIz1U%2FdJMcabpBe19%2FpJdc7vmm8V0KGXaHzKTmm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1023&quot; height=&quot;577&quot; data-origin-width=&quot;1023&quot; data-origin-height=&quot;577&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;뮤텍스 해제&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1051&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdjVGy/dJMcaiIXGCM/rjtmLYvN8aspe5WfZ2KmLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdjVGy/dJMcaiIXGCM/rjtmLYvN8aspe5WfZ2KmLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdjVGy/dJMcaiIXGCM/rjtmLYvN8aspe5WfZ2KmLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdjVGy%2FdJMcaiIXGCM%2FrjtmLYvN8aspe5WfZ2KmLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1051&quot; height=&quot;21&quot; data-origin-width=&quot;1051&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Close_Service 함수 (백업/보안 서비스 종료) &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1357&quot; data-origin-height=&quot;541&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r4Qan/dJMcagj6lgt/ogQhFk8It3glZ7RKcgOyZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r4Qan/dJMcagj6lgt/ogQhFk8It3glZ7RKcgOyZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r4Qan/dJMcagj6lgt/ogQhFk8It3glZ7RKcgOyZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr4Qan%2FdJMcagj6lgt%2FogQhFk8It3glZ7RKcgOyZk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1357&quot; height=&quot;541&quot; data-origin-width=&quot;1357&quot; data-origin-height=&quot;541&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1468&quot; data-origin-height=&quot;140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dfOCDx/dJMcaa5gCjx/wq50qNGuTIv4kpcbThntG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dfOCDx/dJMcaa5gCjx/wq50qNGuTIv4kpcbThntG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dfOCDx/dJMcaa5gCjx/wq50qNGuTIv4kpcbThntG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdfOCDx%2FdJMcaa5gCjx%2Fwq50qNGuTIv4kpcbThntG0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1468&quot; height=&quot;140&quot; data-origin-width=&quot;1468&quot; data-origin-height=&quot;140&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1097&quot; data-origin-height=&quot;477&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cipz6A/dJMcaiCcIbC/bT2wzEgczmEfYhPlyCcvXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cipz6A/dJMcaiCcIbC/bT2wzEgczmEfYhPlyCcvXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cipz6A/dJMcaiCcIbC/bT2wzEgczmEfYhPlyCcvXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcipz6A%2FdJMcaiCcIbC%2FbT2wzEgczmEfYhPlyCcvXk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1097&quot; height=&quot;477&quot; data-origin-width=&quot;1097&quot; data-origin-height=&quot;477&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1121&quot; data-origin-height=&quot;580&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMPIo4/dJMcagYHZ1U/4s4usPov7Gtpn1QNSlKse1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMPIo4/dJMcagYHZ1U/4s4usPov7Gtpn1QNSlKse1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMPIo4/dJMcagYHZ1U/4s4usPov7Gtpn1QNSlKse1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMPIo4%2FdJMcagYHZ1U%2F4s4usPov7Gtpn1QNSlKse1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1121&quot; height=&quot;580&quot; data-origin-width=&quot;1121&quot; data-origin-height=&quot;580&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Close_Log 함수 (로그 서비스 종료)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1372&quot; data-origin-height=&quot;382&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWB6dj/dJMcahJ6VZS/k7AOdoCha9IUFDR597qfGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWB6dj/dJMcahJ6VZS/k7AOdoCha9IUFDR597qfGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWB6dj/dJMcahJ6VZS/k7AOdoCha9IUFDR597qfGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWB6dj%2FdJMcahJ6VZS%2Fk7AOdoCha9IUFDR597qfGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1372&quot; height=&quot;382&quot; data-origin-width=&quot;1372&quot; data-origin-height=&quot;382&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1475&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CZFWj/dJMb99ZCiRd/ukU9kgutD1fgvplcAaP5k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CZFWj/dJMb99ZCiRd/ukU9kgutD1fgvplcAaP5k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CZFWj/dJMb99ZCiRd/ukU9kgutD1fgvplcAaP5k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCZFWj%2FdJMb99ZCiRd%2FukU9kgutD1fgvplcAaP5k1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1475&quot; height=&quot;440&quot; data-origin-width=&quot;1475&quot; data-origin-height=&quot;440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Clear_Recover 함수 (섀도우 카피/백업 삭제)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1486&quot; data-origin-height=&quot;556&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bC7pFV/dJMcacPyIju/KURydcek0P8MwXAcjLCxWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bC7pFV/dJMcacPyIju/KURydcek0P8MwXAcjLCxWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bC7pFV/dJMcacPyIju/KURydcek0P8MwXAcjLCxWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbC7pFV%2FdJMcacPyIju%2FKURydcek0P8MwXAcjLCxWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1486&quot; height=&quot;556&quot; data-origin-width=&quot;1486&quot; data-origin-height=&quot;556&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1505&quot; data-origin-height=&quot;161&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ekiWUX/dJMcagEq5KX/8BHcp2kq5pyKKxuMLuQnE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ekiWUX/dJMcagEq5KX/8BHcp2kq5pyKKxuMLuQnE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ekiWUX/dJMcagEq5KX/8BHcp2kq5pyKKxuMLuQnE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FekiWUX%2FdJMcagEq5KX%2F8BHcp2kq5pyKKxuMLuQnE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1505&quot; height=&quot;161&quot; data-origin-width=&quot;1505&quot; data-origin-height=&quot;161&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; Close_Process 함수 (DB/백업 프로세스 종료) &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1137&quot; data-origin-height=&quot;135&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mVpbk/dJMcai3e5eG/QOJE3K6SACRYgUYubjmeHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mVpbk/dJMcai3e5eG/QOJE3K6SACRYgUYubjmeHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mVpbk/dJMcai3e5eG/QOJE3K6SACRYgUYubjmeHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmVpbk%2FdJMcai3e5eG%2FQOJE3K6SACRYgUYubjmeHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1137&quot; height=&quot;135&quot; data-origin-width=&quot;1137&quot; data-origin-height=&quot;135&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;357&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdBCAb/dJMcafrXJmj/DE0IwOPtZMkVy7rHKFB9Z0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdBCAb/dJMcafrXJmj/DE0IwOPtZMkVy7rHKFB9Z0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdBCAb/dJMcafrXJmj/DE0IwOPtZMkVy7rHKFB9Z0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdBCAb%2FdJMcafrXJmj%2FDE0IwOPtZMkVy7rHKFB9Z0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1192&quot; height=&quot;357&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;357&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; main.main.func1 함수 (Traverse_Disk 함수 호출) &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1098&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pN1sf/dJMcai3e5e9/l5uHO7zkvs73a8VN7TKbQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pN1sf/dJMcai3e5e9/l5uHO7zkvs73a8VN7TKbQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pN1sf/dJMcai3e5e9/l5uHO7zkvs73a8VN7TKbQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpN1sf%2FdJMcai3e5e9%2Fl5uHO7zkvs73a8VN7TKbQK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1098&quot; height=&quot;300&quot; data-origin-width=&quot;1098&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;TraverseDisk 함수 (디스크 순회 및 암호화) &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1442&quot; data-origin-height=&quot;341&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WNAbw/dJMcahXCYwZ/21R83Ulika6wxe8TTuzNVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WNAbw/dJMcahXCYwZ/21R83Ulika6wxe8TTuzNVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WNAbw/dJMcahXCYwZ/21R83Ulika6wxe8TTuzNVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWNAbw%2FdJMcahXCYwZ%2F21R83Ulika6wxe8TTuzNVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1442&quot; height=&quot;341&quot; data-origin-width=&quot;1442&quot; data-origin-height=&quot;341&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1393&quot; data-origin-height=&quot;37&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byUiwV/dJMcahXCYw3/BrutvuZEE2RzWvEP4USBN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byUiwV/dJMcahXCYw3/BrutvuZEE2RzWvEP4USBN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byUiwV/dJMcahXCYw3/BrutvuZEE2RzWvEP4USBN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyUiwV%2FdJMcahXCYw3%2FBrutvuZEE2RzWvEP4USBN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1393&quot; height=&quot;37&quot; data-origin-width=&quot;1393&quot; data-origin-height=&quot;37&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1251&quot; data-origin-height=&quot;13&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cyUwUe/dJMcahpNdTS/SyDnYXQUawKD6AR1Knl9Lk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cyUwUe/dJMcahpNdTS/SyDnYXQUawKD6AR1Knl9Lk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cyUwUe/dJMcahpNdTS/SyDnYXQUawKD6AR1Knl9Lk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcyUwUe%2FdJMcahpNdTS%2FSyDnYXQUawKD6AR1Knl9Lk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1251&quot; height=&quot;13&quot; data-origin-width=&quot;1251&quot; data-origin-height=&quot;13&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1477&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ttKEz/dJMcabpBeyh/aJ8JG4KfKCjukiEpi8Cnk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ttKEz/dJMcabpBeyh/aJ8JG4KfKCjukiEpi8Cnk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ttKEz/dJMcabpBeyh/aJ8JG4KfKCjukiEpi8Cnk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FttKEz%2FdJMcabpBeyh%2FaJ8JG4KfKCjukiEpi8Cnk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1477&quot; height=&quot;17&quot; data-origin-width=&quot;1477&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rCQu6/dJMcabpBeyk/QkkYk7G1LPJGCaAMPQXqC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rCQu6/dJMcabpBeyk/QkkYk7G1LPJGCaAMPQXqC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rCQu6/dJMcabpBeyk/QkkYk7G1LPJGCaAMPQXqC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrCQu6%2FdJMcabpBeyk%2FQkkYk7G1LPJGCaAMPQXqC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1152&quot; height=&quot;18&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;18&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1021&quot; data-origin-height=&quot;421&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qugKB/dJMcaaRLcbn/Bk6U7zOD0t3FszzbR6UtK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qugKB/dJMcaaRLcbn/Bk6U7zOD0t3FszzbR6UtK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qugKB/dJMcaaRLcbn/Bk6U7zOD0t3FszzbR6UtK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqugKB%2FdJMcaaRLcbn%2FBk6U7zOD0t3FszzbR6UtK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1021&quot; height=&quot;421&quot; data-origin-width=&quot;1021&quot; data-origin-height=&quot;421&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBmBM4/dJMcadAQ9IQ/LlLi8RVKMehP8Nv1F5rK40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBmBM4/dJMcadAQ9IQ/LlLi8RVKMehP8Nv1F5rK40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBmBM4/dJMcadAQ9IQ/LlLi8RVKMehP8Nv1F5rK40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBmBM4%2FdJMcadAQ9IQ%2FLlLi8RVKMehP8Nv1F5rK40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1022&quot; height=&quot;18&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;18&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; main.Traverse_Files.func1 함수 (파일/디렉터리 방문) &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1040&quot; data-origin-height=&quot;296&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0Gqnz/dJMcac23nSb/Gj1jsQeMWPio3ylkIYda2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0Gqnz/dJMcac23nSb/Gj1jsQeMWPio3ylkIYda2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0Gqnz/dJMcac23nSb/Gj1jsQeMWPio3ylkIYda2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0Gqnz%2FdJMcac23nSb%2FGj1jsQeMWPio3ylkIYda2K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1040&quot; height=&quot;296&quot; data-origin-width=&quot;1040&quot; data-origin-height=&quot;296&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1113&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zPCK3/dJMcaiIXFYV/0gkDq7m6f9ZDBMK5cYEdY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zPCK3/dJMcaiIXFYV/0gkDq7m6f9ZDBMK5cYEdY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zPCK3/dJMcaiIXFYV/0gkDq7m6f9ZDBMK5cYEdY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzPCK3%2FdJMcaiIXFYV%2F0gkDq7m6f9ZDBMK5cYEdY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1113&quot; height=&quot;282&quot; data-origin-width=&quot;1113&quot; data-origin-height=&quot;282&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;338&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dAIBXo/dJMcaiba0vm/ZwDabBBtqdtvCBo38QFjf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dAIBXo/dJMcaiba0vm/ZwDabBBtqdtvCBo38QFjf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dAIBXo/dJMcaiba0vm/ZwDabBBtqdtvCBo38QFjf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdAIBXo%2FdJMcaiba0vm%2FZwDabBBtqdtvCBo38QFjf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1072&quot; height=&quot;338&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;338&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1396&quot; data-origin-height=&quot;16&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zPDjh/dJMcadt6eGk/Pj7spKZqKaeNCrMZigWka0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zPDjh/dJMcadt6eGk/Pj7spKZqKaeNCrMZigWka0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zPDjh/dJMcadt6eGk/Pj7spKZqKaeNCrMZigWka0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzPDjh%2FdJMcadt6eGk%2FPj7spKZqKaeNCrMZigWka0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1396&quot; height=&quot;16&quot; data-origin-width=&quot;1396&quot; data-origin-height=&quot;16&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1395&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCCneM/dJMcaajUfJw/Az1EGG2qPfk5Fjty7USwxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCCneM/dJMcaajUfJw/Az1EGG2qPfk5Fjty7USwxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCCneM/dJMcaajUfJw/Az1EGG2qPfk5Fjty7USwxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCCneM%2FdJMcaajUfJw%2FAz1EGG2qPfk5Fjty7USwxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1395&quot; height=&quot;18&quot; data-origin-width=&quot;1395&quot; data-origin-height=&quot;18&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;577&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EKLKQ/dJMcafyLaoD/jjOYfKPsU0fSTCueKDUec0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EKLKQ/dJMcafyLaoD/jjOYfKPsU0fSTCueKDUec0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EKLKQ/dJMcafyLaoD/jjOYfKPsU0fSTCueKDUec0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEKLKQ%2FdJMcafyLaoD%2FjjOYfKPsU0fSTCueKDUec0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1152&quot; height=&quot;577&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;577&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;암호화 제외&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;58&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIZL9w/dJMcad1Wh5a/UiwN3OkDV8XMIov2QUwC60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIZL9w/dJMcad1Wh5a/UiwN3OkDV8XMIov2QUwC60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIZL9w/dJMcad1Wh5a/UiwN3OkDV8XMIov2QUwC60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIZL9w%2FdJMcad1Wh5a%2FUiwN3OkDV8XMIov2QUwC60%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1012&quot; height=&quot;58&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;58&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;랜섬노트 내용&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;43&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPYB9z/dJMcachIIZF/ssPkiFxiKzJ4jkAPVMdfCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPYB9z/dJMcachIIZF/ssPkiFxiKzJ4jkAPVMdfCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPYB9z/dJMcachIIZF/ssPkiFxiKzJ4jkAPVMdfCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPYB9z%2FdJMcachIIZF%2FssPkiFxiKzJ4jkAPVMdfCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1022&quot; height=&quot;43&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;43&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; Check_Pass 함수 (암호화 제외 확장자 필터링) &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1021&quot; data-origin-height=&quot;58&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjVCow/dJMcaaKXFvO/FTBIoMCKkQB7yM0JCTZHpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjVCow/dJMcaaKXFvO/FTBIoMCKkQB7yM0JCTZHpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjVCow/dJMcaaKXFvO/FTBIoMCKkQB7yM0JCTZHpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjVCow%2FdJMcaaKXFvO%2FFTBIoMCKkQB7yM0JCTZHpk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1021&quot; height=&quot;58&quot; data-origin-width=&quot;1021&quot; data-origin-height=&quot;58&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1056&quot; data-origin-height=&quot;278&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bG8xNU/dJMcafFvALG/5zQegcWCKjkO1s3wBpUoFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bG8xNU/dJMcafFvALG/5zQegcWCKjkO1s3wBpUoFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bG8xNU/dJMcafFvALG/5zQegcWCKjkO1s3wBpUoFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbG8xNU%2FdJMcafFvALG%2F5zQegcWCKjkO1s3wBpUoFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1056&quot; height=&quot;278&quot; data-origin-width=&quot;1056&quot; data-origin-height=&quot;278&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; main.main.func2 함수 (암호화 진행 상황 모니터링 - 주기적 로깅) &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1438&quot; data-origin-height=&quot;577&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ng0pg/dJMcag5uUu2/sC34IxHIiF2JWQjXx0Zds1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ng0pg/dJMcag5uUu2/sC34IxHIiF2JWQjXx0Zds1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ng0pg/dJMcag5uUu2/sC34IxHIiF2JWQjXx0Zds1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fng0pg%2FdJMcag5uUu2%2FsC34IxHIiF2JWQjXx0Zds1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1438&quot; height=&quot;577&quot; data-origin-width=&quot;1438&quot; data-origin-height=&quot;577&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1460&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coYisx/dJMcadVa9mL/SlSRkDXHfEF9s0aEKuEie1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coYisx/dJMcadVa9mL/SlSRkDXHfEF9s0aEKuEie1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coYisx/dJMcadVa9mL/SlSRkDXHfEF9s0aEKuEie1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoYisx%2FdJMcadVa9mL%2FSlSRkDXHfEF9s0aEKuEie1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1460&quot; height=&quot;21&quot; data-origin-width=&quot;1460&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;main.main.func3 함수 (암호화 함수 호출)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1098&quot; data-origin-height=&quot;421&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1xHXm/dJMcadVbbUA/7QppkbhCb7xZX9SFPMwUC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1xHXm/dJMcadVbbUA/7QppkbhCb7xZX9SFPMwUC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1xHXm/dJMcadVbbUA/7QppkbhCb7xZX9SFPMwUC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1xHXm%2FdJMcadVbbUA%2F7QppkbhCb7xZX9SFPMwUC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1098&quot; height=&quot;421&quot; data-origin-width=&quot;1098&quot; data-origin-height=&quot;421&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;encryptFile (파일 암호화)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;푸터 시그니처 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1097&quot; data-origin-height=&quot;36&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMpyjx/dJMcaac8BUK/ugU2eYhHqCz04bpmdRth8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMpyjx/dJMcaac8BUK/ugU2eYhHqCz04bpmdRth8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMpyjx/dJMcaac8BUK/ugU2eYhHqCz04bpmdRth8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMpyjx%2FdJMcaac8BUK%2FugU2eYhHqCz04bpmdRth8k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1097&quot; height=&quot;36&quot; data-origin-width=&quot;1097&quot; data-origin-height=&quot;36&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RtlGenRandom 호출 (32바이트 임시 개인키 생성)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1452&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cSoM8F/dJMcadVbbWl/73eRnexqSq3Qcj9TkbeI2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cSoM8F/dJMcadVbbWl/73eRnexqSq3Qcj9TkbeI2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cSoM8F/dJMcadVbbWl/73eRnexqSq3Qcj9TkbeI2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcSoM8F%2FdJMcadVbbWl%2F73eRnexqSq3Qcj9TkbeI2K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1452&quot; height=&quot;20&quot; data-origin-width=&quot;1452&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Curve25519 연산 (G * 임시 개인키) -&amp;gt; 32바이트 임시 공개키 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1162&quot; data-origin-height=&quot;222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sD63O/dJMcaa5gE0X/K4n17UK40SYNUK0hzBYMOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sD63O/dJMcaa5gE0X/K4n17UK40SYNUK0hzBYMOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sD63O/dJMcaa5gE0X/K4n17UK40SYNUK0hzBYMOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsD63O%2FdJMcaa5gE0X%2FK4n17UK40SYNUK0hzBYMOk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1162&quot; height=&quot;222&quot; data-origin-width=&quot;1162&quot; data-origin-height=&quot;222&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Curve25519 연산 (임시 개인키, 공격자 공개키) -&amp;gt; ECDH 공유 비밀 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1332&quot; data-origin-height=&quot;301&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfcsIS/dJMcag5uXgf/0O919vKMKmJuGiqB4U7h9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfcsIS/dJMcag5uXgf/0O919vKMKmJuGiqB4U7h9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfcsIS/dJMcag5uXgf/0O919vKMKmJuGiqB4U7h9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfcsIS%2FdJMcag5uXgf%2F0O919vKMKmJuGiqB4U7h9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1332&quot; height=&quot;301&quot; data-origin-width=&quot;1332&quot; data-origin-height=&quot;301&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공격자 Curve25519 공개키 (32바이트)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1207&quot; data-origin-height=&quot;578&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HJbNZ/dJMcaaKXH3d/lAfXni8pti5joqSkZsw6TK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HJbNZ/dJMcaaKXH3d/lAfXni8pti5joqSkZsw6TK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HJbNZ/dJMcaaKXH3d/lAfXni8pti5joqSkZsw6TK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHJbNZ%2FdJMcaaKXH3d%2FlAfXni8pti5joqSkZsw6TK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1207&quot; height=&quot;578&quot; data-origin-width=&quot;1207&quot; data-origin-height=&quot;578&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;.direwolf 확장자 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1107&quot; data-origin-height=&quot;258&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bppl9R/dJMcai3e721/cj0iRf8shTqrvqE9BAko71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bppl9R/dJMcai3e721/cj0iRf8shTqrvqE9BAko71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bppl9R/dJMcai3e721/cj0iRf8shTqrvqE9BAko71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbppl9R%2FdJMcai3e721%2Fcj0iRf8shTqrvqE9BAko71%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1107&quot; height=&quot;258&quot; data-origin-width=&quot;1107&quot; data-origin-height=&quot;258&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 열기 (쓰기 권한)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1237&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bc9X6Q/dJMcag5uXi8/oYQ23E2IA0NS8EEb3TIH5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bc9X6Q/dJMcag5uXi8/oYQ23E2IA0NS8EEb3TIH5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bc9X6Q/dJMcag5uXi8/oYQ23E2IA0NS8EEb3TIH5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbc9X6Q%2FdJMcag5uXi8%2FoYQ23E2IA0NS8EEb3TIH5k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1237&quot; height=&quot;20&quot; data-origin-width=&quot;1237&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SHA-256 Hash (ECDH 공유 비밀) -&amp;gt; ChaCha20 암호화 키 (32바이트)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1420&quot; data-origin-height=&quot;37&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxmRAb/dJMcaiba2Ox/NNFXOFyaKuOss6hk473Fuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxmRAb/dJMcaiba2Ox/NNFXOFyaKuOss6hk473Fuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxmRAb/dJMcaiba2Ox/NNFXOFyaKuOss6hk473Fuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxmRAb%2FdJMcaiba2Ox%2FNNFXOFyaKuOss6hk473Fuk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1420&quot; height=&quot;37&quot; data-origin-width=&quot;1420&quot; data-origin-height=&quot;37&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SHA-256 Hash (ChaCha20 암호화 키) -&amp;gt; ChaCha20 Nonce 추출용 (32바이트)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1427&quot; data-origin-height=&quot;38&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBrzeX/dJMcaaYuvij/A2QuXDdvkaRmAGX6KVdB8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBrzeX/dJMcaaYuvij/A2QuXDdvkaRmAGX6KVdB8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBrzeX/dJMcaaYuvij/A2QuXDdvkaRmAGX6KVdB8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBrzeX%2FdJMcaaYuvij%2FA2QuXDdvkaRmAGX6KVdB8k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1427&quot; height=&quot;38&quot; data-origin-width=&quot;1427&quot; data-origin-height=&quot;38&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ChaCha20 스트림 암호 초기화 (32바이트 키, 12바이트 Nonce)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1191&quot; data-origin-height=&quot;340&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s8sS9/dJMcab4aiVt/9ylkA657cH7cJ8s1rnGurK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s8sS9/dJMcab4aiVt/9ylkA657cH7cJ8s1rnGurK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s8sS9/dJMcab4aiVt/9ylkA657cH7cJ8s1rnGurK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs8sS9%2FdJMcab4aiVt%2F9ylkA657cH7cJ8s1rnGurK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1191&quot; height=&quot;340&quot; data-origin-width=&quot;1191&quot; data-origin-height=&quot;340&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 크기 검사 (1MB 초과 시, 첫 1MB만 암호화) -&amp;gt; 부분 암호화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1103&quot; data-origin-height=&quot;38&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JAfAR/dJMcabJTInI/NJUiko7Kq4emZLosPkNKO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JAfAR/dJMcabJTInI/NJUiko7Kq4emZLosPkNKO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JAfAR/dJMcabJTInI/NJUiko7Kq4emZLosPkNKO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJAfAR%2FdJMcabJTInI%2FNJUiko7Kq4emZLosPkNKO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1103&quot; height=&quot;38&quot; data-origin-width=&quot;1103&quot; data-origin-height=&quot;38&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ChaCha20 KeyStream XOR 연산 (파일 데이터 암호화)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1096&quot; data-origin-height=&quot;301&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfxtuf/dJMcabb1u6E/TadNI6FPTXZHCrhOMwKaVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfxtuf/dJMcabb1u6E/TadNI6FPTXZHCrhOMwKaVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfxtuf/dJMcabb1u6E/TadNI6FPTXZHCrhOMwKaVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcfxtuf%2FdJMcabb1u6E%2FTadNI6FPTXZHCrhOMwKaVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1096&quot; height=&quot;301&quot; data-origin-width=&quot;1096&quot; data-origin-height=&quot;301&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;푸터 쓰기 (임시 공개키 32바이트 + 시그니처 6바이트)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;301&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNG6QJ/dJMcaajUikG/2KYR1HkQvedEKwPxlwO1AK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNG6QJ/dJMcaajUikG/2KYR1HkQvedEKwPxlwO1AK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNG6QJ/dJMcaajUikG/2KYR1HkQvedEKwPxlwO1AK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNG6QJ%2FdJMcaajUikG%2F2KYR1HkQvedEKwPxlwO1AK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1093&quot; height=&quot;301&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;301&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1173&quot; data-origin-height=&quot;301&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkynAq/dJMcacvgViW/WIA4kKCPIkXUK4BHW1Ksh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkynAq/dJMcacvgViW/WIA4kKCPIkXUK4BHW1Ksh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkynAq/dJMcacvgViW/WIA4kKCPIkXUK4BHW1Ksh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkynAq%2FdJMcacvgViW%2FWIA4kKCPIkXUK4BHW1Ksh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1173&quot; height=&quot;301&quot; data-origin-width=&quot;1173&quot; data-origin-height=&quot;301&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5. 복호화 기술 분석 (Decryption Strategy)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.1 복호화 가능성 분석&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;5.1.1 복호화 가능 조건&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 43.3721%;&quot;&gt;&lt;b&gt;요소&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 56.5116%;&quot;&gt;&lt;b&gt;획득 방법&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 43.3721%;&quot;&gt;공격자 공개키&lt;/td&gt;
&lt;td style=&quot;width: 56.5116%;&quot;&gt;정적 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 43.3721%;&quot;&gt;임시 개인키 (파일별)&lt;/td&gt;
&lt;td style=&quot;width: 56.5116%;&quot;&gt;RtlGenRandom API 후킹&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 43.3721%;&quot;&gt;암호화 알고리즘&lt;/td&gt;
&lt;td style=&quot;width: 56.5116%;&quot;&gt;정적 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;5.1.2 복호화 가능 시나리오&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;시나리오 1: RtlGenRandom 후킹 (권장)
───────────────────────────
방법: 암호화 진행 중 API Monitor로 32바이트 페이로드 캡처

시나리오 2: 메모리 덤프
───────────────────────────
방법: 암호화 실행 중 프로세스 메모리 덤프
대상: RtlGenRandom 호출 직후 32바이트 패턴

시나리오 3: 브루트포스
───────────────────────────
방법: 후킹 로그의 모든 32바이트 후보 시도
시간 복잡도: O(n), n = RtlGenRandom 호출 횟수&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.2 복호화 체인&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;5.2.1 전체 복호화 프로세스&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;[입력 데이터]
1. 암호화된 파일 (.direwolf)
2. RtlGenRandom 후킹 로그 (JSON)
3. 공격자 공개키

&amp;darr;

[Step 1: 푸터 파싱]
ciphertext = file[:-38]
temp_pubkey = file[-38:-6]
signature = file[-6:]

&amp;darr;

[Step 2: ECDH 공유 비밀 재생성]
for each candidate_privkey in hooking_log:
    shared_secret = Curve25519.ScalarMult(candidate_privkey, attacker_pubkey)
    
&amp;darr;

[Step 3: 키 파생]
hash1 = SHA256(shared_secret)
hash2 = SHA256(hash1)
chacha20_key = hash1[0:32]
chacha20_nonce = hash2[10:22]

&amp;darr;

[Step 4: ChaCha20 복호화]
plaintext = ChaCha20(ciphertext, chacha20_key, chacha20_nonce)

&amp;darr;

[Step 5: 파일 시그니처 검증]
if plaintext.startswith(JPEG_MAGIC):  # 0xFFD8FF
    extension = '.jpg'
elif plaintext.startswith(PDF_MAGIC):  # 0x25504446
    extension = '.pdf'&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.3 자동화 복호화 스크립트&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;5.3.1 핵심 복호화 로직&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;import json
import hashlib
from cryptography.hazmat.primitives.asymmetric import x25519
from cryptography.hazmat.primitives.serialization import Encoding, PublicFormat

ONE_MB = 0x100000  # 1MB 기준 (부분 암호화 구간)

def decrypt_direwolf(encrypted_file, hooking_json, attacker_pubkey):
    &quot;&quot;&quot;
    Direwolf 복호화
    1) footer에서 temp_pubkey 추출
    2) RtlGenRandom(32B) 후보 수집
    3) pubkey 일치하는 키만 사용
    4) ChaCha20 복호화 (부분 암호화 반영)
    &quot;&quot;&quot;

    # 파일 읽기 및 footer 분리
    with open(encrypted_file, 'rb') as f:
        data = f.read()

    if len(data) &amp;lt; 38:
        return None

    body = data[:-38]
    temp_pubkey_from_file = data[-38:-6]
    signature = data[-6:]

    # 시그니처 확인
    if signature != bytes.fromhex(&quot;abbccddeeff0&quot;):
        return None

    # 부분 암호화 길이 계산 (앞 1MB만 암호화된 경우 대비)
    enc_len = min(len(body), ONE_MB)

    # Hooking 로그에서 32바이트 난수 후보 수집
    with open(hooking_json, 'r') as f:
        log = json.load(f)

    candidates = [
        e.get('payload_hex')
        for e in log.get('events', [])
        if e.get('api') == 'RtlGenRandom'
        and e.get('length_bytes') == 32
        and e.get('payload_hex')
    ]

    attacker_pk = x25519.X25519PublicKey.from_public_bytes(
        bytes.fromhex(attacker_pubkey)
    )

    for temp_privkey_hex in candidates:
        try:
            temp_sk = x25519.X25519PrivateKey.from_private_bytes(
                bytes.fromhex(temp_privkey_hex)
            )

            # footer의 temp_pubkey와 일치하는 후보만 사용
            cand_pub = temp_sk.public_key().public_bytes(
                Encoding.Raw, PublicFormat.Raw
            )
            if cand_pub != temp_pubkey_from_file:
                continue

            # ECDH &amp;rarr; 키/nonce 파생
            shared_secret = temp_sk.exchange(attacker_pk)
            key = hashlib.sha256(shared_secret).digest()
            nonce = hashlib.sha256(key).digest()[10:22]

            # 앞 enc_len만 복호화 (부분 암호화 대응)
            dec_head = chacha20_decrypt(key, nonce, body[:enc_len])
            plaintext = dec_head + body[enc_len:]

            # 복호화 성공 확인
            if check_file_signature(plaintext):
                return plaintext

        except (ValueError, TypeError):
            continue

    return None&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;5.3.2 ChaCha20 구현&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;def chacha20_block(key, counter, nonce):
    &quot;&quot;&quot;ChaCha20 블록 생성&quot;&quot;&quot;
    constants = b&quot;expand 32-byte k&quot;
    
    state = [0] * 16
    state[0:4] = struct.unpack(&quot;&amp;lt;4I&quot;, constants)
    state[4:12] = struct.unpack(&quot;&amp;lt;8I&quot;, key)
    state[12] = counter
    state[13:16] = struct.unpack(&quot;&amp;lt;3I&quot;, nonce)
    
    working = state[:]
    
    # 20 rounds
    for _ in range(10):
        # Column rounds
        quarter_round(working, 0, 4, 8, 12)
        quarter_round(working, 1, 5, 9, 13)
        quarter_round(working, 2, 6, 10, 14)
        quarter_round(working, 3, 7, 11, 15)
        # Diagonal rounds
        quarter_round(working, 0, 5, 10, 15)
        quarter_round(working, 1, 6, 11, 12)
        quarter_round(working, 2, 7, 8, 13)
        quarter_round(working, 3, 4, 9, 14)
    
    output = [(working[i] + state[i]) &amp;amp; 0xffffffff for i in range(16)]
    return b&quot;&quot;.join(struct.pack(&quot;&amp;lt;I&quot;, w) for w in output)&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.4 무결성 검증&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;5.4.1 파일 시그니처 테이블&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 106px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 32.2093%; height: 21px;&quot;&gt;&lt;b&gt;파일 유형&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 67.6744%; height: 21px;&quot;&gt;&lt;b&gt;매직 넘버 (Hex)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 32.2093%; height: 17px;&quot;&gt;JPEG&lt;/td&gt;
&lt;td style=&quot;width: 67.6744%; height: 17px;&quot;&gt;FF D8 FF E0/E1/DB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 32.2093%; height: 17px;&quot;&gt;PNG&lt;/td&gt;
&lt;td style=&quot;width: 67.6744%; height: 17px;&quot;&gt;89 50 4E 47 0D 0A 1A 0A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 32.2093%; height: 17px;&quot;&gt;PDF&lt;/td&gt;
&lt;td style=&quot;width: 67.6744%; height: 17px;&quot;&gt;25 50 44 46&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 32.2093%; height: 17px;&quot;&gt;ZIP/DOCX&lt;/td&gt;
&lt;td style=&quot;width: 67.6744%; height: 17px;&quot;&gt;50 4B 03 04&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 32.2093%; height: 17px;&quot;&gt;EXE&lt;/td&gt;
&lt;td style=&quot;width: 67.6744%; height: 17px;&quot;&gt;4D 5A&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;5.4.2 검증 로직&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;def check_file_signature(data):
    &quot;&quot;&quot;복호화된 데이터 검증&quot;&quot;&quot;
    signatures = {
        b'\\xFF\\xD8\\xFF': &quot;.jpg&quot;,
        b'\\x89PNG': &quot;.png&quot;,
        b'%PDF': &quot;.pdf&quot;,
        b'PK\\x03\\x04': &quot;.zip&quot;,
        b'MZ': &quot;.exe&quot;
    }
    
    for sig, ext in signatures.items():
        if data.startswith(sig):
            return ext
    
    return None
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6. 요약 및 결론 (Conclusion)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.1 최종 평가&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Direwolf 랜섬웨어는 &lt;b&gt;ECDH (Curve25519) + SHA-256 (2회) + ChaCha20&lt;/b&gt;을 사용하는 현대적인 하이브리드 암호화 구조를 가지고 있습니다. Golang으로 개발되어 크로스 플랫폼 지원이 가능하며, 파일별 독립 키 생성과 1MB 임계값 기반 부분 암호화로 성능을 최적화했습니다. &lt;b&gt;RtlGenRandom API 후킹을 통해 임시 개인키를 획득&lt;/b&gt;하면 완전한 복호화가 가능합니다. 테스트 결과 모든 파일에서 매직 바이트가 검증되었으며, 파일 무결성이 확인되었습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.2 대응 가이드&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;6.2.1 예방적 조치&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;API 모니터링&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RtlGenRandom 과도한 호출 탐지&lt;/li&gt;
&lt;li&gt;32바이트 요청 패턴 감지&lt;/li&gt;
&lt;li&gt;실시간 API 후킹 로깅&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;행위 기반 탐지&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대량 파일 접근 패턴&lt;/li&gt;
&lt;li&gt;.direwolf 확장자 추가 차단&lt;/li&gt;
&lt;li&gt;고루틴 생성 패턴 탐지&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;네트워크 방어&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Tor 네트워크 접근 차단&lt;/li&gt;
&lt;li&gt;C&amp;amp;C 통신 탐지&lt;/li&gt;
&lt;li&gt;DNS 필터링&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;백업 전략&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실시간 오프라인 백업&lt;/li&gt;
&lt;li&gt;VSS (Volume Shadow Copy) 보호&lt;/li&gt;
&lt;li&gt;Immutable 백업 스토리지&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;6.2.2 사후 대응&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;초동 조치&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;감염 시스템 격리&lt;/li&gt;
&lt;li&gt;&lt;b&gt;즉시 RtlGenRandom API 후킹 시작&lt;/b&gt; (시스템 종료 금지!)&lt;/li&gt;
&lt;li&gt;프로세스 메모리 덤프&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;키 복구&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;API Monitor 로그에서 32바이트 후보 추출&lt;/li&gt;
&lt;li&gt;메모리 덤프 분석 (높은 엔트로피 32바이트 패턴)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;복호화 수행&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자동화 스크립트 실행&lt;/li&gt;
&lt;li&gt;브루트포스 (후보 키 시도)&lt;/li&gt;
&lt;li&gt;매직 바이트 검증&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시스템 복구&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;복호화 성공 후 시스템 재구축&lt;/li&gt;
&lt;li&gt;초기 침투 경로 분석&lt;/li&gt;
&lt;li&gt;보안 패치 적용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.3 기술적 특징 요약&lt;/b&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;세부 내용&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;키 교환&lt;/td&gt;
&lt;td&gt;ECDH (Curve25519, 256-bit)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;키 파생&lt;/td&gt;
&lt;td&gt;SHA-256 (2회)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;대칭 암호&lt;/td&gt;
&lt;td&gt;ChaCha20 (256-bit key, 96-bit nonce)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;키 생성&lt;/td&gt;
&lt;td&gt;RtlGenRandom (CSPRNG)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;최적화&lt;/td&gt;
&lt;td&gt;1MB 초과 시 부분 암호화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;푸터&lt;/td&gt;
&lt;td&gt;38 bytes (임시 공개키 + 시그니처)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;확장자&lt;/td&gt;
&lt;td&gt;.direwolf&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;랜섬 노트&lt;/td&gt;
&lt;td&gt;README_TO_DECRYPT.txt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;언어&lt;/td&gt;
&lt;td&gt;Golang 1.x&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.4 결론&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Direwolf 랜섬웨어는 &lt;b&gt;강력한 암호학적 설계&lt;/b&gt;를 가지고 있으나, &lt;b&gt;RtlGenRandom API가 노출된 취약점&lt;/b&gt;으로 인해 동적 분석을 통한 복호화가 가능합니다. 공격자의 공개키가 바이너리에 하드코딩되어 있고, 파일별 임시 개인키가 Windows API를 통해 생성되므로 API 후킹으로 완전한 키 체인을 복구할 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;암호학 알고리즘 :&lt;/b&gt; Curve25519 + ChaCha20&lt;/li&gt;
&lt;li&gt;&lt;b&gt;구현 취약점 :&lt;/b&gt; RtlGenRandom 후킹 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;부록&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;YARA 룰&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1) Direwolf 랜섬웨어 바이너리 탐지(PE)&lt;/p&gt;
&lt;pre id=&quot;code_1771353415324&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;rule Ransomware_Direwolf_Golang_UPX_AttackerPubkey
{
  strings:
    // attacker Curve25519 pubkey (32B) from report
    $attacker_pk = { c5 9e 3a d3 3a 79 dd 6e 0f 1b f2 28 63 6b a4 76 ba ff 99 3e 82 d1 1c 7e 51 f2 71 2c fd 23 0c 1f }

    // common artifacts
    $ext  = &quot;.direwolf&quot; ascii wide
    $note = &quot;README_TO_DECRYPT.txt&quot; ascii wide

    // UPX section names are often present in packed samples
    $upx0 = &quot;UPX0&quot; ascii
    $upx1 = &quot;UPX1&quot; ascii

  condition:
    uint16(0) == 0x5A4D and          // MZ
    filesize &amp;lt; 15MB and
    $attacker_pk and
    (1 of ($ext, $note)) and
    (1 of ($upx0, $upx1))
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;2) 암호화된 파일(.direwolf) 아티팩트 탐지 (footer 시그니처)&lt;/p&gt;
&lt;pre id=&quot;code_1771353459271&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;rule Ransomware_Direwolf_EncryptedFile_FooterSignature
{
  strings:
    $sig = { AB BC CD DE EF F0 }  // footer signature (6B)

  condition:
    filesize &amp;gt; 38 and
    $sig at (filesize - 6)
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>랜섬웨어 분석 보고서</category>
      <author>geonwoo9643</author>
      <guid isPermaLink="true">https://mzcompany.tistory.com/17</guid>
      <comments>https://mzcompany.tistory.com/17#entry17comment</comments>
      <pubDate>Mon, 9 Feb 2026 19:31:59 +0900</pubDate>
    </item>
    <item>
      <title>Mallox 랜섬웨어 분석 보고서</title>
      <link>https://mzcompany.tistory.com/16</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 1. 개요 (Overview)&lt;/b&gt;&lt;/h3&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.1 분석 배경&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Mallox&lt;/b&gt; 랜섬웨어는 2021년에 처음 등장한 RaaS(Ransomware-as-a-Service) 그룹으로, 초기에는 ChaCha20 기반 암호화를 사용했으나 최신 버전에서는&amp;nbsp;&lt;b&gt;AES-256-GCM&lt;/b&gt; 기반 암호화 구조로 변경되었습니다. AES-128 키는 고정 하드코딩 값이 아니라 &lt;b&gt;ECDH 결과에서 파생되는 세션 기반 키입니다. GCM Nonce&lt;/b&gt; 길이는 구현에 따라 달라질 수 있으며, 본 샘플에서는 8바이트를 사용했습니다. 암호화 체인은 다음과 같이 구성됩니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;645&quot; data-start=&quot;537&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;564&quot; data-start=&quot;537&quot;&gt;X25519(ECDH)를 통해 공유 비밀 생성&lt;/li&gt;
&lt;li data-end=&quot;583&quot; data-start=&quot;565&quot;&gt;SHA-256을 통해 키 파생&lt;/li&gt;
&lt;li data-end=&quot;617&quot; data-start=&quot;584&quot;&gt;파생된 키를 기반으로 AES-128-CTR 키 래핑 수행&lt;/li&gt;
&lt;li data-end=&quot;645&quot; data-start=&quot;618&quot;&gt;파일 데이터 암호화에 사용되는 AES-256-GCM&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.2 핵심 요약&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;암호화 체인 :&lt;/b&gt; &lt;span&gt;X25519 (ECDH) &lt;/span&gt;&lt;span&gt;&amp;rarr; SHA-256 (Key Derivation) &lt;/span&gt;&lt;span&gt;&amp;rarr; AES-128-CTR (per-file key wrapping) &lt;/span&gt;&lt;span&gt;&amp;rarr; AES-256-GCM (파일 암호화)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;메모리 포렌식 :&lt;/b&gt; ECDH 결과 또는 SHA-256 파생 키를 메모리에서 확보해야 복호화 가능&lt;/li&gt;
&lt;li&gt;&lt;b&gt;푸터 구조 :&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;931&quot; data-start=&quot;917&quot;&gt;108 bytes 고정&lt;/li&gt;
&lt;li data-end=&quot;987&quot; data-start=&quot;932&quot;&gt;40 bytes: AES-256 key + GCM nonce (AES-128-CTR로 암호화됨)&lt;/li&gt;
&lt;li data-end=&quot;1010&quot; data-start=&quot;988&quot;&gt;16 bytes: AES-CTR IV&lt;/li&gt;
&lt;li data-end=&quot;1023&quot; data-start=&quot;1011&quot;&gt;기타 상수 및 매직&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;암호화 워크플로우&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;shell&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;// Step 0: ECDH 기반 세션 키 도출
shared_secret = X25519(private_key, peer_public_key);
session_key = SHA256(shared_secret);     // 32 bytes
aes128_ctr_key = session_key[0:16];      // CTR wrapping key

// Step 1: ISAAC PRNG에서 per-file 난수 생성
v56 = isaac_extract(16);      // AES-128-CTR IV (16B)
v60 = isaac_extract(40);      // 32B AES-256 key + 8B GCM nonce

// Step 2: per-file key 래핑 (AES-128-CTR)
encrypted_metadata = AES128_CTR_Encrypt(v60, aes128_ctr_key, v56);

// Step 3: 파일 데이터 암호화 (AES-256-GCM)
file_ciphertext = AES256_GCM_Encrypt(file_data, key=v60[0:32], nonce=v60[32:40]);

// Step 4: Footer 구성
footer = magic + size + encrypted_metadata + v56 + const + const + magic2;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 2. 식별 정보 (Identification)&lt;/b&gt;&lt;/h3&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 144px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px; text-align: justify;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px; text-align: justify;&quot;&gt;&lt;b&gt;값&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;Malware Family&lt;/td&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;Mallox Ransom (TargetCompany)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;Filetype&lt;/td&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;PE32+ (Windows 64-bit Executable)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;Hash (SHA256)&lt;/td&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;06699c98ed2ef759b2434ac5777a2886b966c0ffa1c96c046f5cde77fe833784&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;Extension&lt;/td&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;.mallab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px; text-align: justify;&quot;&gt;Target&lt;/td&gt;
&lt;td style=&quot;height: 21px; text-align: justify;&quot;&gt;Windows 기반 시스템&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;First Seen&lt;/td&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;June 2021&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;Ransom Note&lt;/td&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;&quot;HOW TO RECOVER !!.TXT&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 3. 분석 환경 및 도구 (Tools) &lt;/b&gt;&lt;/h3&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;도구명 (Tool)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;용도 (Purpose)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;정적 분석&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;IDA Pro&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;AES-GCM/GHASH 구현 루틴 및 암호화 로직 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;동적 분석&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;WinDbg&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;메모리 덤프 및 암호화 키 추출&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;행위 분석&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;Process Monitor&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;파일 I/O 및 암호화 행위 추적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;암호 분석&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;Python + Pycryptodome&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;AES-256-GCM 복호화 스크립트 개발&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;메모리 분석&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;메모리 포렌식&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;AES-128-CTR 키 추출&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 4. 암호화 기술 분석 (Technical Analysis)&lt;/b&gt;&lt;/h3&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 4.1 전체 암호화 워크플로우&lt;/b&gt;&lt;/h4&gt;
&lt;pre class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;[실행 단계] 
1. 초기화 - X25519 키쌍 생성 (개인 키 32바이트) - 베이스 포인트 연산 수행 - ECDH shared secret 생성 - SHA-256(shared_secret) &amp;rarr; 세션 키 도출 - 해당 세션 키를 AES-128-CTR key로 사용
&amp;darr; 
2. 파일 탐색 및 암호화 - 재귀적 디렉터리 탐색 - 파일 필터링 (.exe, .dll, .mallab 제외) - 파일별 ISAAC PRNG에서 랜덤 데이터 생성
&amp;darr; 
3. 파일별 암호화 수행 [ISAAC PRNG 출력] - v56 = 16바이트 (AES-128-CTR IV) - v60 = 40바이트 (AES-256 key 32B + GCM nonce 8B)
&amp;darr; 
[Step 1: AES-128-CTR로 v60 암호화] encrypted_metadata = AES128_CTR(v60, aes128_ctr_key, v56)
&amp;darr;&amp;nbsp;&amp;nbsp;
[Step 2: AES-256-GCM로 파일 암호화] ciphertext = AES256_GCM(file_data, v60[:32], v60[32:40])
&amp;darr; 
[Step 3: 푸터 구성 및 저장] footer = magic1(8B) + original_size(8B) + encrypted_metadata(40B) + v56(16B) + const1(16B) + const2(16B) + magic2(4B)
&amp;darr; Original Size : 파일 데이터 원본 길이 저장, 복호화 후 원본 길이만큼 잘라줘야 함
&amp;darr; Const1/Const2 : 실제로는 고정 상수 (의미 없는 자리 채움일 수 있음)
4. 파일명 변경 및 랜섬 노트 생성 - 원본.확장자 &amp;rarr; 원본.확장자.mallab - HOW TO RECOVER !!.TXT 생성&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.2 키 생성 및 관리 (Key Generation)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.2.1 하이브리드 암호화 구조&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ISAAC PRNG 기반 per-file 키 생성&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;shell&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;ISAAC PRNG (Indirection, Shift, Accumulate, Add, Count)

&amp;bull; 내부 상태: 2KB (256 &amp;times; 32-bit words)
&amp;bull; 출력: 32-bit 정수 스트림
&amp;bull; 파일별 독립적인 난수 시퀀스 생성에 사용

Mallox는 ISAAC을 per-file AES-256 key 및
GCM nonce 생성에 사용한다.

※ ISAAC은 고속 PRNG이지만,
현대 CSPRNG(Cryptographically Secure PRNG)와
동일한 수준의 안전성이 보장되는 것은 아니다.&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;AES-128-CTR 키

용도: 푸터의 40바이트 메타데이터 암호화

특징: AES-128-CTR 키는 ECDH 결과에서 파생되며, 동일 감염 인스턴스에서 생성된 파일들에 대해 공통으로 사용될 수 있다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;중요:&lt;/b&gt; &lt;span&gt;AES-128-CTR 키는 X25519(ECDH) 결과를 SHA-256으로 해시하여 &lt;/span&gt;&lt;span&gt;동적으로 생성됩니다. &lt;/span&gt;&lt;span&gt;따라서 고정 마스터 키는 존재하지 않으며, &lt;/span&gt;&lt;span&gt;감염 인스턴스마다 키가 달라집니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;4.2.2 키 체인 구조 &lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;shell&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;원본 파일 
&amp;darr; 
[AES-256-GCM 암호화] 암호화된 파일 
&amp;darr; 
AES-256 키 (32바이트) + GCM nonce (8바이트) 
&amp;darr; 
[AES-128-CTR 암호화, master_key 사용] 암호화된 메타데이터 (40바이트, 푸터에 저장) 
&amp;darr; 
AES-128-CTR 키 (16바이트)&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.3 AES 암호화 알고리즘&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.3.1 AES-256-GCM 구조&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;알고리즘 특성
모드: GCM (Galois/Counter Mode)

키 길이: 32바이트 (256비트)

Nonce: 8바이트 (64비트)

인증: GHASH (Galois Hash)&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;GCM 모드 특징
CTR 암호화: 병렬 처리 가능

GHASH 인증: 데이터 무결성 보장

AEAD: Authenticated Encryption with Associated Data&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;4.3.2 AES-128-CTR 키 래핑 &lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;// AES-128-CTR
// 16바이트 IV: isaac_extract(16) 
// 16바이트, 파일별 독립 Mode: CTR (Counter Mode) 
// CTR 모드 동작 Counter = IV + 0 C[i] = P[i] &amp;oplus; AES_Encrypt(Counter + i, Key) 
// 메타데이터 암호화 plaintext = AES_256_key (32B) + GCM_nonce (8B) 
// 40바이트 ciphertext = AES128_CTR_Encrypt(plaintext, master_key, IV)&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.4 파일 처리 아키텍처&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.4.1 암호화된 파일 구조&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Mallox는 파일 끝에&amp;nbsp;&lt;b&gt;108바이트&lt;/b&gt;&amp;nbsp;고정 크기 푸터를 추가합니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 207px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;&lt;b&gt;영역&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;&lt;b&gt;크기&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px; text-align: justify;&quot;&gt;암호화된 데이터&lt;/td&gt;
&lt;td style=&quot;height: 21px; text-align: justify;&quot;&gt;원본 크기&lt;/td&gt;
&lt;td style=&quot;height: 21px; text-align: justify;&quot;&gt;AES-256-GCM으로 암호화된 파일 내용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;&lt;b&gt;Footer (108 bytes)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;└─ Offset 0-7&lt;/td&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;8 bytes&lt;/td&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;Magic: 0201020100000000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px; text-align: justify;&quot;&gt;└─ Offset 8-15&lt;/td&gt;
&lt;td style=&quot;height: 21px; text-align: justify;&quot;&gt;8 bytes&lt;/td&gt;
&lt;td style=&quot;height: 21px; text-align: justify;&quot;&gt;원본 파일 크기 (Little-endian)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px; text-align: justify;&quot;&gt;└─ Offset 16-55&lt;/td&gt;
&lt;td style=&quot;height: 21px; text-align: justify;&quot;&gt;40 bytes&lt;/td&gt;
&lt;td style=&quot;height: 21px; text-align: justify;&quot;&gt;&lt;b&gt;암호화된 메타데이터&lt;/b&gt;&amp;nbsp;(AES-128-CTR)- AES-256 key (32B) + GCM nonce (8B)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;└─ Offset 56-71&lt;/td&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;16 bytes&lt;/td&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;&lt;b&gt;AES-128-CTR IV&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px; text-align: justify;&quot;&gt;└─ Offset 72-87&lt;/td&gt;
&lt;td style=&quot;height: 21px; text-align: justify;&quot;&gt;16 bytes&lt;/td&gt;
&lt;td style=&quot;height: 21px; text-align: justify;&quot;&gt;Const1 (고정값)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px; text-align: justify;&quot;&gt;└─ Offset 88-103&lt;/td&gt;
&lt;td style=&quot;height: 21px; text-align: justify;&quot;&gt;16 bytes&lt;/td&gt;
&lt;td style=&quot;height: 21px; text-align: justify;&quot;&gt;Const2 (고정값)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;└─ Offset 104-107&lt;/td&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;4 bytes&lt;/td&gt;
&lt;td style=&quot;height: 17px; text-align: justify;&quot;&gt;Magic: 00000000&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;&lt;b&gt;4.4.2 실제 푸터 예시 &lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;Size: 49152 bytes (0x0000000000c00000) 
Encrypted Metadata: 
6047e0e6ed1e5281b41f855c68888f2e... // 40 bytes AES-CTR IV: 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx // 16 bytes Const1: 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx // 16 bytes Const2: 
00000000000000000000000000000000 // 16 bytes Magic2: 00000000&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 4.5 정적 분석 &lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;WinMain 함수&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;러시아/CIS 국가 언어 검사 (실행 제외)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nYWry/dJMcachIo9n/uPkkWpNmXLKoRNtHdtRfGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nYWry/dJMcachIo9n/uPkkWpNmXLKoRNtHdtRfGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nYWry/dJMcachIo9n/uPkkWpNmXLKoRNtHdtRfGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnYWry%2FdJMcachIo9n%2FuPkkWpNmXLKoRNtHdtRfGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1020&quot; height=&quot;21&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;뮤텍스 생성 (중복 실행 방지)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1028&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RymI4/dJMcaflcjfA/TWA6wO42Ws7Ow78Hr9OGZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RymI4/dJMcaflcjfA/TWA6wO42Ws7Ow78Hr9OGZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RymI4/dJMcaflcjfA/TWA6wO42Ws7Ow78Hr9OGZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRymI4%2FdJMcaflcjfA%2FTWA6wO42Ws7Ow78Hr9OGZk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1028&quot; height=&quot;21&quot; data-origin-width=&quot;1028&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;고성능 전원 모드 설정 (암호화 속도 최적화)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1271&quot; data-origin-height=&quot;177&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buZEAC/dJMcabJTnqe/lzsHhciA8i2YJVAecLp3DK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buZEAC/dJMcabJTnqe/lzsHhciA8i2YJVAecLp3DK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buZEAC/dJMcabJTnqe/lzsHhciA8i2YJVAecLp3DK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuZEAC%2FdJMcabJTnqe%2FlzsHhciA8i2YJVAecLp3DK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1271&quot; height=&quot;177&quot; data-origin-width=&quot;1271&quot; data-origin-height=&quot;177&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;권한 상승&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;38&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JFq0I/dJMcahceApw/Dq4FV7WBy1IE7PJktA0Yp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JFq0I/dJMcahceApw/Dq4FV7WBy1IE7PJktA0Yp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JFq0I/dJMcahceApw/Dq4FV7WBy1IE7PJktA0Yp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJFq0I%2FdJMcahceApw%2FDq4FV7WBy1IE7PJktA0Yp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1027&quot; height=&quot;38&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;38&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1028&quot; data-origin-height=&quot;521&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfpgh0/dJMcajgMi1S/nkt1eygEmJSi62AEFKR5wk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfpgh0/dJMcajgMi1S/nkt1eygEmJSi62AEFKR5wk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfpgh0/dJMcajgMi1S/nkt1eygEmJSi62AEFKR5wk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbfpgh0%2FdJMcajgMi1S%2Fnkt1eygEmJSi62AEFKR5wk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1028&quot; height=&quot;521&quot; data-origin-width=&quot;1028&quot; data-origin-height=&quot;521&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;첫 번째 작업 스레드 생성 (복구 방지/섀도우 카피 삭제)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1137&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/J4OdG/dJMcagLbWFO/TraxcWkUKlulZKZgcxuUyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/J4OdG/dJMcagLbWFO/TraxcWkUKlulZKZgcxuUyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/J4OdG/dJMcagLbWFO/TraxcWkUKlulZKZgcxuUyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ4OdG%2FdJMcagLbWFO%2FTraxcWkUKlulZKZgcxuUyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1137&quot; height=&quot;20&quot; data-origin-width=&quot;1137&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1306&quot; data-origin-height=&quot;78&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ukBi7/dJMcagLbWFP/NOq9sMFME77sefaHGhYDlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ukBi7/dJMcagLbWFP/NOq9sMFME77sefaHGhYDlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ukBi7/dJMcagLbWFP/NOq9sMFME77sefaHGhYDlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FukBi7%2FdJMcagLbWFP%2FNOq9sMFME77sefaHGhYDlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1306&quot; height=&quot;78&quot; data-origin-width=&quot;1306&quot; data-origin-height=&quot;78&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1042&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvhrq7/dJMcafes8Dc/yZbo6cKNNTIJ3NUfK8xM71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvhrq7/dJMcafes8Dc/yZbo6cKNNTIJ3NUfK8xM71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvhrq7/dJMcafes8Dc/yZbo6cKNNTIJ3NUfK8xM71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbvhrq7%2FdJMcafes8Dc%2FyZbo6cKNNTIJ3NUfK8xM71%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1042&quot; height=&quot;20&quot; data-origin-width=&quot;1042&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;랜섬노트 내용&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1177&quot; data-origin-height=&quot;582&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bk6bE3/dJMcaiCcpTQ/W66iO1qsq1oUZ67mRRPRa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bk6bE3/dJMcaiCcpTQ/W66iO1qsq1oUZ67mRRPRa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bk6bE3/dJMcaiCcpTQ/W66iO1qsq1oUZ67mRRPRa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbk6bE3%2FdJMcaiCcpTQ%2FW66iO1qsq1oUZ67mRRPRa0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1177&quot; height=&quot;582&quot; data-origin-width=&quot;1177&quot; data-origin-height=&quot;582&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;두 번째 작업 스레드 생성 (방어 도구 제거)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1030&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ra9yn/dJMcad1VYPi/wR5l2tKl1QSttMkWQmk7xk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ra9yn/dJMcad1VYPi/wR5l2tKl1QSttMkWQmk7xk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ra9yn/dJMcad1VYPi/wR5l2tKl1QSttMkWQmk7xk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fra9yn%2FdJMcad1VYPi%2FwR5l2tKl1QSttMkWQmk7xk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1030&quot; height=&quot;21&quot; data-origin-width=&quot;1030&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1191&quot; data-origin-height=&quot;537&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgz32T/dJMcacvgAHD/BL6sahpPvWvVuMU54tWR30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgz32T/dJMcacvgAHD/BL6sahpPvWvVuMU54tWR30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgz32T/dJMcacvgAHD/BL6sahpPvWvVuMU54tWR30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdgz32T%2FdJMcacvgAHD%2FBL6sahpPvWvVuMU54tWR30%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1191&quot; height=&quot;537&quot; data-origin-width=&quot;1191&quot; data-origin-height=&quot;537&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;155&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bX0tQ8/dJMb99ZB06s/70f59tUZJgG4ShN1w2kB10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bX0tQ8/dJMb99ZB06s/70f59tUZJgG4ShN1w2kB10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bX0tQ8/dJMb99ZB06s/70f59tUZJgG4ShN1w2kB10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbX0tQ8%2FdJMb99ZB06s%2F70f59tUZJgG4ShN1w2kB10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1022&quot; height=&quot;155&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;155&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NtQueryObject API 동적 로딩&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1421&quot; data-origin-height=&quot;42&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WQssw/dJMcacWibB0/A8AbPAjtdNCy1MmoZA8Cf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WQssw/dJMcacWibB0/A8AbPAjtdNCy1MmoZA8Cf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WQssw/dJMcacWibB0/A8AbPAjtdNCy1MmoZA8Cf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWQssw%2FdJMcacWibB0%2FA8AbPAjtdNCy1MmoZA8Cf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1421&quot; height=&quot;42&quot; data-origin-width=&quot;1421&quot; data-origin-height=&quot;42&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시스템 종료 차단&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1401&quot; data-origin-height=&quot;41&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Xr8Dn/dJMcaaEcXxO/esK3se5XpwkkNtbuJSspVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Xr8Dn/dJMcaaEcXxO/esK3se5XpwkkNtbuJSspVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Xr8Dn/dJMcaaEcXxO/esK3se5XpwkkNtbuJSspVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXr8Dn%2FdJMcaaEcXxO%2FesK3se5XpwkkNtbuJSspVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1401&quot; height=&quot;41&quot; data-origin-width=&quot;1401&quot; data-origin-height=&quot;41&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1228&quot; data-origin-height=&quot;135&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpQToL/dJMcafes8Df/KcOQMWyDQ7dCkrh6rZ3wc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpQToL/dJMcafes8Df/KcOQMWyDQ7dCkrh6rZ3wc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpQToL/dJMcafes8Df/KcOQMWyDQ7dCkrh6rZ3wc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpQToL%2FdJMcafes8Df%2FKcOQMWyDQ7dCkrh6rZ3wc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1228&quot; height=&quot;135&quot; data-origin-width=&quot;1228&quot; data-origin-height=&quot;135&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1353&quot; data-origin-height=&quot;61&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WAcNw/dJMcaf6zhsv/xhy9V4Hk4OVP0zFGSKGEkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WAcNw/dJMcaf6zhsv/xhy9V4Hk4OVP0zFGSKGEkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WAcNw/dJMcaf6zhsv/xhy9V4Hk4OVP0zFGSKGEkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWAcNw%2FdJMcaf6zhsv%2Fxhy9V4Hk4OVP0zFGSKGEkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1353&quot; height=&quot;61&quot; data-origin-width=&quot;1353&quot; data-origin-height=&quot;61&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;암호화 초기화 및 시작&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqsnOw/dJMcaiPHP2e/HJkhJmTFgYPLqH0UE7CiIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqsnOw/dJMcaiPHP2e/HJkhJmTFgYPLqH0UE7CiIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqsnOw/dJMcaiPHP2e/HJkhJmTFgYPLqH0UE7CiIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqsnOw%2FdJMcaiPHP2e%2FHJkhJmTFgYPLqH0UE7CiIk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1095&quot; height=&quot;18&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;18&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;명령줄 인자 파싱&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lOBti/dJMb99SOw7A/eWO920c3DCcqjMdS6giEn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lOBti/dJMb99SOw7A/eWO920c3DCcqjMdS6giEn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lOBti/dJMb99SOw7A/eWO920c3DCcqjMdS6giEn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlOBti%2FdJMb99SOw7A%2FeWO920c3DCcqjMdS6giEn1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1095&quot; height=&quot;17&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1030&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbsOHf/dJMcaaYubuV/k1yKPpFPhwPpO09pQt1DDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbsOHf/dJMcaaYubuV/k1yKPpFPhwPpO09pQt1DDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbsOHf/dJMcaaYubuV/k1yKPpFPhwPpO09pQt1DDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbsOHf%2FdJMcaaYubuV%2Fk1yKPpFPhwPpO09pQt1DDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1030&quot; height=&quot;18&quot; data-origin-width=&quot;1030&quot; data-origin-height=&quot;18&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1028&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxtZAm/dJMcadAQRNU/6W1B9p8cHN7AE0uIEHW7T1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxtZAm/dJMcadAQRNU/6W1B9p8cHN7AE0uIEHW7T1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxtZAm/dJMcadAQRNU/6W1B9p8cHN7AE0uIEHW7T1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxtZAm%2FdJMcadAQRNU%2F6W1B9p8cHN7AE0uIEHW7T1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1028&quot; height=&quot;17&quot; data-origin-width=&quot;1028&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1023&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qTWVB/dJMb99L1VTs/BqY3JYoc181qiZKdGZob8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qTWVB/dJMb99L1VTs/BqY3JYoc181qiZKdGZob8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qTWVB/dJMb99L1VTs/BqY3JYoc181qiZKdGZob8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqTWVB%2FdJMb99L1VTs%2FBqY3JYoc181qiZKdGZob8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1023&quot; height=&quot;20&quot; data-origin-width=&quot;1023&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1025&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rgpxO/dJMcafS2B2V/atlzkBRkzkqxJW2yXh5Z51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rgpxO/dJMcafS2B2V/atlzkBRkzkqxJW2yXh5Z51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rgpxO/dJMcafS2B2V/atlzkBRkzkqxJW2yXh5Z51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrgpxO%2FdJMcafS2B2V%2FatlzkBRkzkqxJW2yXh5Z51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1025&quot; height=&quot;18&quot; data-origin-width=&quot;1025&quot; data-origin-height=&quot;18&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1053&quot; data-origin-height=&quot;22&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dji0B5/dJMcagLbWF0/B6AbIbfuF1lzARL5MifZkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dji0B5/dJMcagLbWF0/B6AbIbfuF1lzARL5MifZkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dji0B5/dJMcagLbWF0/B6AbIbfuF1lzARL5MifZkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdji0B5%2FdJMcagLbWF0%2FB6AbIbfuF1lzARL5MifZkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1053&quot; height=&quot;22&quot; data-origin-width=&quot;1053&quot; data-origin-height=&quot;22&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1013&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eAtNSB/dJMcajnxYnP/buNBiYkIvvqekNVyYOWQ2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eAtNSB/dJMcajnxYnP/buNBiYkIvvqekNVyYOWQ2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eAtNSB/dJMcajnxYnP/buNBiYkIvvqekNVyYOWQ2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeAtNSB%2FdJMcajnxYnP%2FbuNBiYkIvvqekNVyYOWQ2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1013&quot; height=&quot;17&quot; data-origin-width=&quot;1013&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 126px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;&lt;b&gt;옵션&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;&lt;b&gt;의미&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;&lt;b&gt;예시&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;-l&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;파일 잠금 목록&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;파일 리스트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;-d&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;복호화 모드&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;복호화 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;-p&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;경로 리스트 파일&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;paths.txt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;-path&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;특정 경로 지정&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;C:\Users&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;-queue&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;숫자 파라미터&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;4 (스레드 개수)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;난수 소스 수집 (QPC, ThreadID, PID, TSC)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1025&quot; data-origin-height=&quot;121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kY2fq/dJMcacvgAJi/fbj3ME7lGGytXMWxe2UdWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kY2fq/dJMcacvgAJi/fbj3ME7lGGytXMWxe2UdWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kY2fq/dJMcacvgAJi/fbj3ME7lGGytXMWxe2UdWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkY2fq%2FdJMcacvgAJi%2Ffbj3ME7lGGytXMWxe2UdWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1025&quot; height=&quot;121&quot; data-origin-width=&quot;1025&quot; data-origin-height=&quot;121&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;난수 생성기 초기화 (CryptGenRandom)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1182&quot; data-origin-height=&quot;118&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6Desg/dJMcajukHOE/kkTG6bxQPB9628WmGYlG6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6Desg/dJMcajukHOE/kkTG6bxQPB9628WmGYlG6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6Desg/dJMcajukHOE/kkTG6bxQPB9628WmGYlG6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6Desg%2FdJMcajukHOE%2FkkTG6bxQPB9628WmGYlG6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1182&quot; height=&quot;118&quot; data-origin-width=&quot;1182&quot; data-origin-height=&quot;118&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Mersenne Twister 시드 설정 및 상태 배열 초기화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1026&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rxcJI/dJMcajukHOG/mJJNFfUTL9KCuAcpGc0Cg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rxcJI/dJMcajukHOG/mJJNFfUTL9KCuAcpGc0Cg0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rxcJI/dJMcajukHOG/mJJNFfUTL9KCuAcpGc0Cg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrxcJI%2FdJMcajukHOG%2FmJJNFfUTL9KCuAcpGc0Cg0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1026&quot; height=&quot;21&quot; data-origin-width=&quot;1026&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1331&quot; data-origin-height=&quot;121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccT2KR/dJMcacvgAJj/FLdeM9hUTnvW0oVJidSiU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccT2KR/dJMcacvgAJj/FLdeM9hUTnvW0oVJidSiU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccT2KR/dJMcacvgAJj/FLdeM9hUTnvW0oVJidSiU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccT2KR%2FdJMcacvgAJj%2FFLdeM9hUTnvW0oVJidSiU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1331&quot; height=&quot;121&quot; data-origin-width=&quot;1331&quot; data-origin-height=&quot;121&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;초기 상수 배열 초기화 (X25519 ECDH 2단계 파라미터용)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dPimrA/dJMcabb1a7M/rKQ4SThqpQMw7H9833Mki0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dPimrA/dJMcabb1a7M/rKQ4SThqpQMw7H9833Mki0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dPimrA/dJMcabb1a7M/rKQ4SThqpQMw7H9833Mki0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdPimrA%2FdJMcabb1a7M%2FrKQ4SThqpQMw7H9833Mki0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1087&quot; height=&quot;21&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;X25519 베이스포인트 및 추가 상수 초기화 (ECDH 키 파생용)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1097&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d3koRm/dJMcajukHOI/PBuGkN5obGzydBBUEVxLbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d3koRm/dJMcajukHOI/PBuGkN5obGzydBBUEVxLbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d3koRm/dJMcajukHOI/PBuGkN5obGzydBBUEVxLbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd3koRm%2FdJMcajukHOI%2FPBuGkN5obGzydBBUEVxLbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1097&quot; height=&quot;21&quot; data-origin-width=&quot;1097&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컴퓨터 이름 수집 (ID 생성용)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1021&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beUcfs/dJMcafFvg2e/ZmpedHpagrn54kPOk7xDB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beUcfs/dJMcafFvg2e/ZmpedHpagrn54kPOk7xDB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beUcfs/dJMcafFvg2e/ZmpedHpagrn54kPOk7xDB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeUcfs%2FdJMcafFvg2e%2FZmpedHpagrn54kPOk7xDB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1021&quot; height=&quot;20&quot; data-origin-width=&quot;1021&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Windows 디렉터리 생성 시간 수집&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/siigZ/dJMcacWibDR/BfaNoeRg0uDBM7PwWdzneK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/siigZ/dJMcacWibDR/BfaNoeRg0uDBM7PwWdzneK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/siigZ/dJMcacWibDR/BfaNoeRg0uDBM7PwWdzneK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsiigZ%2FdJMcacWibDR%2FBfaNoeRg0uDBM7PwWdzneK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1020&quot; height=&quot;21&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;볼륨 시리얼 번호 수집&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;77&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccz043/dJMcacWibDT/nd0P9fvOwxlknzhsit3MBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccz043/dJMcacWibDT/nd0P9fvOwxlknzhsit3MBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccz043/dJMcacWibDT/nd0P9fvOwxlknzhsit3MBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fccz043%2FdJMcacWibDT%2Fnd0P9fvOwxlknzhsit3MBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1017&quot; height=&quot;77&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;77&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시스템 정보 결합&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;22&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yZr1q/dJMcacaXzyY/b0HaZxzhIujmkiz88MvKy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yZr1q/dJMcacaXzyY/b0HaZxzhIujmkiz88MvKy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yZr1q/dJMcacaXzyY/b0HaZxzhIujmkiz88MvKy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyZr1q%2FdJMcacaXzyY%2Fb0HaZxzhIujmkiz88MvKy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1020&quot; height=&quot;22&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;22&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CPU ID 수집&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;57&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LxojO/dJMcacvgAOe/AG0NcnFRHnznjPLtvn8ZfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LxojO/dJMcacvgAOe/AG0NcnFRHnznjPLtvn8ZfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LxojO/dJMcacvgAOe/AG0NcnFRHnznjPLtvn8ZfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLxojO%2FdJMcacvgAOe%2FAG0NcnFRHnznjPLtvn8ZfK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1020&quot; height=&quot;57&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;57&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SHA-256 초기 해시값 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1101&quot; data-origin-height=&quot;178&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lLfwf/dJMcacvgAO5/bscU92rg7mf1K1oGQgehAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lLfwf/dJMcacvgAO5/bscU92rg7mf1K1oGQgehAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lLfwf/dJMcacvgAO5/bscU92rg7mf1K1oGQgehAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlLfwf%2FdJMcacvgAO5%2FbscU92rg7mf1K1oGQgehAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1101&quot; height=&quot;178&quot; data-origin-width=&quot;1101&quot; data-origin-height=&quot;178&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SHA-256 해시 (시스템 정보)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biaVYv/dJMcaaxq7kv/H0cYJQQjbMst9mZ7OT81u1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biaVYv/dJMcaaxq7kv/H0cYJQQjbMst9mZ7OT81u1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biaVYv/dJMcaaxq7kv/H0cYJQQjbMst9mZ7OT81u1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiaVYv%2FdJMcaaxq7kv%2FH0cYJQQjbMst9mZ7OT81u1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1093&quot; height=&quot;17&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n5nlJ/dJMcabJTnFC/s5gaL4YkTsKQwkgBRTU7eK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n5nlJ/dJMcabJTnFC/s5gaL4YkTsKQwkgBRTU7eK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n5nlJ/dJMcabJTnFC/s5gaL4YkTsKQwkgBRTU7eK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn5nlJ%2FdJMcabJTnFC%2Fs5gaL4YkTsKQwkgBRTU7eK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1102&quot; height=&quot;138&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;138&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1091&quot; data-origin-height=&quot;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tykSB/dJMcaihUOX1/Sj3OkO0De2GMjDxc89Rcmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tykSB/dJMcaihUOX1/Sj3OkO0De2GMjDxc89Rcmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tykSB/dJMcaihUOX1/Sj3OkO0De2GMjDxc89Rcmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtykSB%2FdJMcaihUOX1%2FSj3OkO0De2GMjDxc89Rcmk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1091&quot; height=&quot;138&quot; data-origin-width=&quot;1091&quot; data-origin-height=&quot;138&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;개인 키 생성 (32바이트)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1098&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LPAmh/dJMcaa5gjsh/B0k21OgO1V3GkJKffRnj31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LPAmh/dJMcaa5gjsh/B0k21OgO1V3GkJKffRnj31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LPAmh/dJMcaa5gjsh/B0k21OgO1V3GkJKffRnj31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLPAmh%2FdJMcaa5gjsh%2FB0k21OgO1V3GkJKffRnj31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1098&quot; height=&quot;20&quot; data-origin-width=&quot;1098&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;57&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dZ1kzR/dJMcahDiyZr/0dbcOrpmpEeL5nQzhGDE0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dZ1kzR/dJMcahDiyZr/0dbcOrpmpEeL5nQzhGDE0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dZ1kzR/dJMcahDiyZr/0dbcOrpmpEeL5nQzhGDE0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdZ1kzR%2FdJMcahDiyZr%2F0dbcOrpmpEeL5nQzhGDE0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1072&quot; height=&quot;57&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;57&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;58&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dIlEdh/dJMcagLbWTt/vGCDcLLdVNHVf7GiKkHagk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dIlEdh/dJMcagLbWTt/vGCDcLLdVNHVf7GiKkHagk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dIlEdh/dJMcagLbWTt/vGCDcLLdVNHVf7GiKkHagk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdIlEdh%2FdJMcagLbWTt%2FvGCDcLLdVNHVf7GiKkHagk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1087&quot; height=&quot;58&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;58&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;X25519 ECDH 3단계 연산 (개인 키, 베이스 포인트)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1092&quot; data-origin-height=&quot;57&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w9Oee/dJMcafyKTfM/uGa9bSuia4Un0hIjIxcVA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w9Oee/dJMcafyKTfM/uGa9bSuia4Un0hIjIxcVA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w9Oee/dJMcafyKTfM/uGa9bSuia4Un0hIjIxcVA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw9Oee%2FdJMcafyKTfM%2FuGa9bSuia4Un0hIjIxcVA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1092&quot; height=&quot;57&quot; data-origin-width=&quot;1092&quot; data-origin-height=&quot;57&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1132&quot; data-origin-height=&quot;436&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEOpDK/dJMcaiWuFWH/dFofLDoVhl7o01Oq6QkSk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEOpDK/dJMcaiWuFWH/dFofLDoVhl7o01Oq6QkSk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEOpDK/dJMcaiWuFWH/dFofLDoVhl7o01Oq6QkSk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEOpDK%2FdJMcaiWuFWH%2FdFofLDoVhl7o01Oq6QkSk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1132&quot; height=&quot;436&quot; data-origin-width=&quot;1132&quot; data-origin-height=&quot;436&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;635&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHl72t/dJMcaiWuFWJ/n4Bk02QaNsXlNAVql9fkAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHl72t/dJMcaiWuFWJ/n4Bk02QaNsXlNAVql9fkAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHl72t/dJMcaiWuFWJ/n4Bk02QaNsXlNAVql9fkAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHl72t%2FdJMcaiWuFWJ%2Fn4Bk02QaNsXlNAVql9fkAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;612&quot; height=&quot;635&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;635&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SHA-256 초기 상수 재설정&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1101&quot; data-origin-height=&quot;177&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7479n/dJMcai3eO6B/JZ8zDd4pRro2QINS9HyQv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7479n/dJMcai3eO6B/JZ8zDd4pRro2QINS9HyQv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7479n/dJMcai3eO6B/JZ8zDd4pRro2QINS9HyQv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7479n%2FdJMcai3eO6B%2FJZ8zDd4pRro2QINS9HyQv0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1101&quot; height=&quot;177&quot; data-origin-width=&quot;1101&quot; data-origin-height=&quot;177&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SHA-256 (ECDH 결과) &amp;rarr; 최종 마스터 키 생성 (32바이트)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1105&quot; data-origin-height=&quot;37&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnAejh/dJMcafFvg5V/P0WfrKOQOQZJKcSky0O0r1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnAejh/dJMcafFvg5V/P0WfrKOQOQZJKcSky0O0r1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnAejh/dJMcafFvg5V/P0WfrKOQOQZJKcSky0O0r1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnAejh%2FdJMcafFvg5V%2FP0WfrKOQOQZJKcSky0O0r1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1105&quot; height=&quot;37&quot; data-origin-width=&quot;1105&quot; data-origin-height=&quot;37&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최종 키 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1015&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dqKYRV/dJMcajnxYBx/Ma5N8Nn96D5bz5Ync4nLHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dqKYRV/dJMcajnxYBx/Ma5N8Nn96D5bz5Ync4nLHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dqKYRV/dJMcajnxYBx/Ma5N8Nn96D5bz5Ync4nLHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdqKYRV%2FdJMcajnxYBx%2FMa5N8Nn96D5bz5Ync4nLHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1015&quot; height=&quot;17&quot; data-origin-width=&quot;1015&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;볼륨 열거 및 마운트&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;15&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvCVxU/dJMcac9NfVM/jyrK53bWM214WIAi2RgOQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvCVxU/dJMcac9NfVM/jyrK53bWM214WIAi2RgOQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvCVxU/dJMcac9NfVM/jyrK53bWM214WIAi2RgOQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvCVxU%2FdJMcac9NfVM%2FjyrK53bWM214WIAi2RgOQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1093&quot; height=&quot;15&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;15&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1317&quot; data-origin-height=&quot;597&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QdirG/dJMcagxCBpd/P2KmA1K0WDejMJxZGbcwN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QdirG/dJMcagxCBpd/P2KmA1K0WDejMJxZGbcwN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QdirG/dJMcagxCBpd/P2KmA1K0WDejMJxZGbcwN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQdirG%2FdJMcagxCBpd%2FP2KmA1K0WDejMJxZGbcwN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1317&quot; height=&quot;597&quot; data-origin-width=&quot;1317&quot; data-origin-height=&quot;597&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvT5AC/dJMcaflcjlc/vEMS78CtkZiLjPD4sXy0Ck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvT5AC/dJMcaflcjlc/vEMS78CtkZiLjPD4sXy0Ck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvT5AC/dJMcaflcjlc/vEMS78CtkZiLjPD4sXy0Ck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvT5AC%2FdJMcaflcjlc%2FvEMS78CtkZiLjPD4sXy0Ck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1093&quot; height=&quot;158&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;158&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1092&quot; data-origin-height=&quot;217&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lzMys/dJMcadnlnLA/kTBxwkZ6XMwShHDk9CgVB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lzMys/dJMcadnlnLA/kTBxwkZ6XMwShHDk9CgVB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lzMys/dJMcadnlnLA/kTBxwkZ6XMwShHDk9CgVB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlzMys%2FdJMcadnlnLA%2FkTBxwkZ6XMwShHDk9CgVB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1092&quot; height=&quot;217&quot; data-origin-width=&quot;1092&quot; data-origin-height=&quot;217&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/H62mE/dJMcadt5XEe/CmKSD21SiucmKRrCM3Ytm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/H62mE/dJMcadt5XEe/CmKSD21SiucmKRrCM3Ytm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/H62mE/dJMcadt5XEe/CmKSD21SiucmKRrCM3Ytm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH62mE%2FdJMcadt5XEe%2FCmKSD21SiucmKRrCM3Ytm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1095&quot; height=&quot;18&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;18&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;38&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8qF2w/dJMcafFvg7K/zD4ZSkpCJdKawuGEXa7YWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8qF2w/dJMcafFvg7K/zD4ZSkpCJdKawuGEXa7YWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8qF2w/dJMcafFvg7K/zD4ZSkpCJdKawuGEXa7YWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8qF2w%2FdJMcafFvg7K%2FzD4ZSkpCJdKawuGEXa7YWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1095&quot; height=&quot;38&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;38&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1082&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cisl6J/dJMcahDiyZz/VZKwMYlWSWbPyd0SKlNQak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cisl6J/dJMcahDiyZz/VZKwMYlWSWbPyd0SKlNQak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cisl6J/dJMcahDiyZz/VZKwMYlWSWbPyd0SKlNQak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcisl6J%2FdJMcahDiyZz%2FVZKwMYlWSWbPyd0SKlNQak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1082&quot; height=&quot;17&quot; data-origin-width=&quot;1082&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;FindFirstFileExW 지원 여부 테스트&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1097&quot; data-origin-height=&quot;142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjuv43/dJMcaioHSQB/ZaP3wCdZApYMWprSWarVZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjuv43/dJMcaioHSQB/ZaP3wCdZApYMWprSWarVZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjuv43/dJMcaioHSQB/ZaP3wCdZApYMWprSWarVZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbjuv43%2FdJMcaioHSQB%2FZaP3wCdZApYMWprSWarVZ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1097&quot; height=&quot;142&quot; data-origin-width=&quot;1097&quot; data-origin-height=&quot;142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;고유 ID 생성 (랜섬노트용)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lbCxQ/dJMcahpMV1I/XmhU9dcKHDN4uXcTvJYQk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lbCxQ/dJMcahpMV1I/XmhU9dcKHDN4uXcTvJYQk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lbCxQ/dJMcahpMV1I/XmhU9dcKHDN4uXcTvJYQk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlbCxQ%2FdJMcahpMV1I%2FXmhU9dcKHDN4uXcTvJYQk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1140&quot; height=&quot;21&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;파일 암호화&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bROoyC/dJMcahQQTxg/LV6xUCbCH2O4ps9lm0P7x1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bROoyC/dJMcahQQTxg/LV6xUCbCH2O4ps9lm0P7x1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bROoyC/dJMcahQQTxg/LV6xUCbCH2O4ps9lm0P7x1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbROoyC%2FdJMcahQQTxg%2FLV6xUCbCH2O4ps9lm0P7x1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1087&quot; height=&quot;17&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;I/O Completion 포트 생성 (멀티스레드 암호화)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1090&quot; data-origin-height=&quot;22&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTv9J3/dJMcabXoyZr/wsqmXpuKriGN575Dl3yVa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTv9J3/dJMcabXoyZr/wsqmXpuKriGN575Dl3yVa1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTv9J3/dJMcabXoyZr/wsqmXpuKriGN575Dl3yVa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTv9J3%2FdJMcabXoyZr%2FwsqmXpuKriGN575Dl3yVa1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1090&quot; height=&quot;22&quot; data-origin-width=&quot;1090&quot; data-origin-height=&quot;22&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;워커 스레드 생성 (파일 암호화 처리)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QMMmP/dJMcabb1bh4/J4k6xw7HctrRiUV6UuTGKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QMMmP/dJMcabb1bh4/J4k6xw7HctrRiUV6UuTGKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QMMmP/dJMcabb1bh4/J4k6xw7HctrRiUV6UuTGKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQMMmP%2FdJMcabb1bh4%2FJ4k6xw7HctrRiUV6UuTGKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1086&quot; height=&quot;20&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모든 볼륨 열거&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1075&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVgzU3/dJMcag5uCr1/bW1Qep3XCvZm4SP7N8KiM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVgzU3/dJMcag5uCr1/bW1Qep3XCvZm4SP7N8KiM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVgzU3/dJMcag5uCr1/bW1Qep3XCvZm4SP7N8KiM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVgzU3%2FdJMcag5uCr1%2FbW1Qep3XCvZm4SP7N8KiM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1075&quot; height=&quot;17&quot; data-origin-width=&quot;1075&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;숨겨진 볼륨 마운트 (복구 방지)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1105&quot; data-origin-height=&quot;321&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNpPVc/dJMcagqRQ6O/xH6rfkdOP58tRFSucRThdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNpPVc/dJMcagqRQ6O/xH6rfkdOP58tRFSucRThdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNpPVc/dJMcagqRQ6O/xH6rfkdOP58tRFSucRThdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNpPVc%2FdJMcagqRQ6O%2FxH6rfkdOP58tRFSucRThdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1105&quot; height=&quot;321&quot; data-origin-width=&quot;1105&quot; data-origin-height=&quot;321&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모든 논리 드라이브 스캔&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1085&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/97EEg/dJMcacB0Sdy/r6PVO3UZTQqAPGSit6rz3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/97EEg/dJMcacB0Sdy/r6PVO3UZTQqAPGSit6rz3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/97EEg/dJMcacB0Sdy/r6PVO3UZTQqAPGSit6rz3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F97EEg%2FdJMcacB0Sdy%2Fr6PVO3UZTQqAPGSit6rz3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1085&quot; height=&quot;17&quot; data-origin-width=&quot;1085&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;드라이브별 암호화 스레드 생성&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cl0dpo/dJMcaibaIB5/F1LAjTOeB4CKEIA9BV0Y4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cl0dpo/dJMcaibaIB5/F1LAjTOeB4CKEIA9BV0Y4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cl0dpo/dJMcaibaIB5/F1LAjTOeB4CKEIA9BV0Y4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcl0dpo%2FdJMcaibaIB5%2FF1LAjTOeB4CKEIA9BV0Y4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1086&quot; height=&quot;18&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;18&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;디렉터리 재귀 탐색 및 암호화 대상 큐 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1088&quot; data-origin-height=&quot;135&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKPKb0/dJMcai3eO7U/k2FkP2dzAyyCbc5LyXzNeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKPKb0/dJMcai3eO7U/k2FkP2dzAyyCbc5LyXzNeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKPKb0/dJMcai3eO7U/k2FkP2dzAyyCbc5LyXzNeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKPKb0%2FdJMcai3eO7U%2Fk2FkP2dzAyyCbc5LyXzNeK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1088&quot; height=&quot;135&quot; data-origin-width=&quot;1088&quot; data-origin-height=&quot;135&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;드라이브 타입 확인 (로컬/네트워크)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1096&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Y0CNv/dJMb996mqkJ/KCuvQ3M5exatoWoxxwRQJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Y0CNv/dJMb996mqkJ/KCuvQ3M5exatoWoxxwRQJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Y0CNv/dJMb996mqkJ/KCuvQ3M5exatoWoxxwRQJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FY0CNv%2FdJMb996mqkJ%2FKCuvQ3M5exatoWoxxwRQJ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1096&quot; height=&quot;20&quot; data-origin-width=&quot;1096&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;제외 디렉터리 검사&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1215&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bznERj/dJMcafMia0P/vRpQ36k3WqCoy69xdbjyO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bznERj/dJMcafMia0P/vRpQ36k3WqCoy69xdbjyO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bznERj/dJMcafMia0P/vRpQ36k3WqCoy69xdbjyO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbznERj%2FdJMcafMia0P%2FvRpQ36k3WqCoy69xdbjyO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1215&quot; height=&quot;21&quot; data-origin-width=&quot;1215&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1031&quot; data-origin-height=&quot;611&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ff2QK/dJMcaiIXmny/7pFSZTnWyKoTPRxwxRV1Rk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ff2QK/dJMcaiIXmny/7pFSZTnWyKoTPRxwxRV1Rk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ff2QK/dJMcaiIXmny/7pFSZTnWyKoTPRxwxRV1Rk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFf2QK%2FdJMcaiIXmny%2F7pFSZTnWyKoTPRxwxRV1Rk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1031&quot; height=&quot;611&quot; data-origin-width=&quot;1031&quot; data-origin-height=&quot;611&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1771661701412&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;제외 디렉터리 목록

msocache, $windows.~ws, system volume information, intel, appdata, perflogs, programdata, 
google, application data, tor browser, boot, $windows.~bt, mozilla, boot, windows.old,
Windows Microsoft.NET, WindowsPowerShell, Windows NT, Windows, Common Files,
Microsoft Security Client, Internet Explorer, Reference, Assemblies, Windows Defender,
Microsoft ASP.NET, Core Runtime, Package, Store, Microsoft Help Viewer, Microsoft MPI,
Windows Kits, Microsoft.NET, Windows Mail, Microsoft Security Client, Package Store,
Microsoft Analysis Services, Windows Portable Devices, Windows Photo Viewer, Windows Sidebar&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;화이트리스트 확장자 검사&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;15&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MWJFH/dJMcaaqE64Z/FyouTekv8imOhH7FIG6VoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MWJFH/dJMcaaqE64Z/FyouTekv8imOhH7FIG6VoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MWJFH/dJMcaaqE64Z/FyouTekv8imOhH7FIG6VoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMWJFH%2FdJMcaaqE64Z%2FFyouTekv8imOhH7FIG6VoK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1100&quot; height=&quot;15&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;15&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1035&quot; data-origin-height=&quot;615&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wqDvz/dJMcahpMV1L/lF6ryN2thk7NghDAKPmNw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wqDvz/dJMcahpMV1L/lF6ryN2thk7NghDAKPmNw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wqDvz/dJMcahpMV1L/lF6ryN2thk7NghDAKPmNw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwqDvz%2FdJMcahpMV1L%2FlF6ryN2thk7NghDAKPmNw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1035&quot; height=&quot;615&quot; data-origin-width=&quot;1035&quot; data-origin-height=&quot;615&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1771661737881&quot; class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;암호화 대상 확장자 목록

.msstyles, .icl, .idx, .avast, .rtp, .mallox, .sys, .nomedia, .dll, .hta, .cur, .lock, .cpl,
.Globeimposter-Alpha865qqz, .ics, .hlp, .com, .spl, .msi, .key, .mpa, .rom, .drv, .bat, .386,
.adv, .diangcab, .mod, .scr, .theme, .ocx, .prf, .cab, .diagcfg, .msu, .cmd, .ico, .msc, .ani,
.icns, .diagpkg, .deskthemepackm, .wpx, .msp, .bin, .themepack, .shs, .nls, .exe, .lnk, .ps1, 
.mallab&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;블랙리스트 파일명 검사&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Efz6m/dJMcad1VZfy/TtZKzBQDQzkoGStTLuYlR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Efz6m/dJMcad1VZfy/TtZKzBQDQzkoGStTLuYlR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Efz6m/dJMcad1VZfy/TtZKzBQDQzkoGStTLuYlR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEfz6m%2FdJMcad1VZfy%2FTtZKzBQDQzkoGStTLuYlR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1086&quot; height=&quot;18&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;18&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1036&quot; data-origin-height=&quot;278&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sMxCc/dJMcac9Nf0Q/mRNdC6qP41DHz9ZKjzsbvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sMxCc/dJMcac9Nf0Q/mRNdC6qP41DHz9ZKjzsbvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sMxCc/dJMcac9Nf0Q/mRNdC6qP41DHz9ZKjzsbvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsMxCc%2FdJMcac9Nf0Q%2FmRNdC6qP41DHz9ZKjzsbvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1036&quot; height=&quot;278&quot; data-origin-width=&quot;1036&quot; data-origin-height=&quot;278&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1771661730046&quot; class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;제외 파일 목록

desktop.ini, ntuser.dat, thumbs.db, iconcache.db, ntuser.ini, ntldr, bootfont.bin, 
ntuser.dat.log, bootsect.bak, boot.ini, autorun.inf, debugLog.txt, TargetInfo.txt&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;암호화 작업 큐에 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1091&quot; data-origin-height=&quot;23&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PDMI7/dJMcagLbWWZ/yBwM3fCaEOURu6cScJzzOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PDMI7/dJMcagLbWWZ/yBwM3fCaEOURu6cScJzzOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PDMI7/dJMcagLbWWZ/yBwM3fCaEOURu6cScJzzOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPDMI7%2FdJMcagLbWWZ%2FyBwM3fCaEOURu6cScJzzOk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1091&quot; height=&quot;23&quot; data-origin-width=&quot;1091&quot; data-origin-height=&quot;23&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;랜섬노트 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1088&quot; data-origin-height=&quot;22&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ARXV4/dJMcafFvg9q/KGsAgtQuMtmRZBGNDHLOCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ARXV4/dJMcafFvg9q/KGsAgtQuMtmRZBGNDHLOCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ARXV4/dJMcafFvg9q/KGsAgtQuMtmRZBGNDHLOCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FARXV4%2FdJMcafFvg9q%2FKGsAgtQuMtmRZBGNDHLOCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1088&quot; height=&quot;22&quot; data-origin-width=&quot;1088&quot; data-origin-height=&quot;22&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;암호화 작업 큐 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1082&quot; data-origin-height=&quot;40&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cyzBLV/dJMcac223JT/jZlrvFS3qknf3VlsmnWJA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cyzBLV/dJMcac223JT/jZlrvFS3qknf3VlsmnWJA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cyzBLV/dJMcac223JT/jZlrvFS3qknf3VlsmnWJA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcyzBLV%2FdJMcac223JT%2FjZlrvFS3qknf3VlsmnWJA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1082&quot; height=&quot;40&quot; data-origin-width=&quot;1082&quot; data-origin-height=&quot;40&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;랜섬노트 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yB9az/dJMcahceAC9/2Jj9lYtR487K4mWYgLkojK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yB9az/dJMcahceAC9/2Jj9lYtR487K4mWYgLkojK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yB9az/dJMcahceAC9/2Jj9lYtR487K4mWYgLkojK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyB9az%2FdJMcahceAC9%2F2Jj9lYtR487K4mWYgLkojK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1087&quot; height=&quot;18&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;18&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1113&quot; data-origin-height=&quot;616&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sFyYH/dJMcaaxq7xH/0MRSDk8UrXV2omoYCxtXb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sFyYH/dJMcaaxq7xH/0MRSDk8UrXV2omoYCxtXb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sFyYH/dJMcaaxq7xH/0MRSDk8UrXV2omoYCxtXb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsFyYH%2FdJMcaaxq7xH%2F0MRSDk8UrXV2omoYCxtXb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1113&quot; height=&quot;616&quot; data-origin-width=&quot;1113&quot; data-origin-height=&quot;616&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;마스터 키 메모리 삭제&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1096&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MSbF7/dJMcajgMjed/5K9aOxBACSd565yVfD2mm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MSbF7/dJMcajgMjed/5K9aOxBACSd565yVfD2mm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MSbF7/dJMcajgMjed/5K9aOxBACSd565yVfD2mm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMSbF7%2FdJMcajgMjed%2F5K9aOxBACSd565yVfD2mm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1096&quot; height=&quot;17&quot; data-origin-width=&quot;1096&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;네트워크 공유 스레드 강제 종료&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1096&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mYHtC/dJMcafyKTmw/qDFBGi2DpFmkTbzeoZKWyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mYHtC/dJMcafyKTmw/qDFBGi2DpFmkTbzeoZKWyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mYHtC/dJMcafyKTmw/qDFBGi2DpFmkTbzeoZKWyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmYHtC%2FdJMcafyKTmw%2FqDFBGi2DpFmkTbzeoZKWyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1096&quot; height=&quot;17&quot; data-origin-width=&quot;1096&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;감염 정보 수집 (HDD 사용 용량, 시스템 정보) 및 C2 전송 후, 로컬 백업&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1101&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LcdOJ/dJMcaiCcqcd/yu39rKnU8fQXOdot9BMG8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LcdOJ/dJMcaiCcqcd/yu39rKnU8fQXOdot9BMG8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LcdOJ/dJMcaiCcqcd/yu39rKnU8fQXOdot9BMG8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLcdOJ%2FdJMcaiCcqcd%2Fyu39rKnU8fQXOdot9BMG8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1101&quot; height=&quot;17&quot; data-origin-width=&quot;1101&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1088&quot; data-origin-height=&quot;297&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TWFHE/dJMcaaRKUH0/uZdaNhy4vX8gkOK4neThVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TWFHE/dJMcaaRKUH0/uZdaNhy4vX8gkOK4neThVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TWFHE/dJMcaaRKUH0/uZdaNhy4vX8gkOK4neThVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTWFHE%2FdJMcaaRKUH0%2FuZdaNhy4vX8gkOK4neThVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1088&quot; height=&quot;297&quot; data-origin-width=&quot;1088&quot; data-origin-height=&quot;297&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpQZX2/dJMcacvgAXg/kMszOUgZjCB3J8fCVauvPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpQZX2/dJMcacvgAXg/kMszOUgZjCB3J8fCVauvPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpQZX2/dJMcacvgAXg/kMszOUgZjCB3J8fCVauvPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpQZX2%2FdJMcacvgAXg%2FkMszOUgZjCB3J8fCVauvPK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1095&quot; height=&quot;540&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1133&quot; data-origin-height=&quot;503&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nw8eI/dJMcadHDMj0/CaBj9Y29C6wKLGrXQw7exk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nw8eI/dJMcadHDMj0/CaBj9Y29C6wKLGrXQw7exk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nw8eI/dJMcadHDMj0/CaBj9Y29C6wKLGrXQw7exk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnw8eI%2FdJMcadHDMj0%2FCaBj9Y29C6wKLGrXQw7exk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1133&quot; height=&quot;503&quot; data-origin-width=&quot;1133&quot; data-origin-height=&quot;503&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1237&quot; data-origin-height=&quot;140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Tah3t/dJMcahJ6ELK/ARuS14kbql6PJ7S9KT2dkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Tah3t/dJMcahJ6ELK/ARuS14kbql6PJ7S9KT2dkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Tah3t/dJMcahJ6ELK/ARuS14kbql6PJ7S9KT2dkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTah3t%2FdJMcahJ6ELK%2FARuS14kbql6PJ7S9KT2dkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1237&quot; height=&quot;140&quot; data-origin-width=&quot;1237&quot; data-origin-height=&quot;140&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Http Request 함수&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1157&quot; data-origin-height=&quot;576&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CQFro/dJMcadVaQLc/inQeVXDCg7fkeuB0yFLHK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CQFro/dJMcadVaQLc/inQeVXDCg7fkeuB0yFLHK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CQFro/dJMcadVaQLc/inQeVXDCg7fkeuB0yFLHK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCQFro%2FdJMcadVaQLc%2FinQeVXDCg7fkeuB0yFLHK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1157&quot; height=&quot;576&quot; data-origin-width=&quot;1157&quot; data-origin-height=&quot;576&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일/디렉터리 존재 여부 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1097&quot; data-origin-height=&quot;42&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UWAzU/dJMcafFvg9B/BMs3sCBTHO6wKAv89ebhe1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UWAzU/dJMcafFvg9B/BMs3sCBTHO6wKAv89ebhe1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UWAzU/dJMcafFvg9B/BMs3sCBTHO6wKAv89ebhe1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUWAzU%2FdJMcafFvg9B%2FBMs3sCBTHO6wKAv89ebhe1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1097&quot; height=&quot;42&quot; data-origin-width=&quot;1097&quot; data-origin-height=&quot;42&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;관리자 권한 체크&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1441&quot; data-origin-height=&quot;120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7sY0w/dJMcabQCEOA/gu1yD9o3wMF7akpOkbjv2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7sY0w/dJMcabQCEOA/gu1yD9o3wMF7akpOkbjv2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7sY0w/dJMcabQCEOA/gu1yD9o3wMF7akpOkbjv2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7sY0w%2FdJMcabQCEOA%2Fgu1yD9o3wMF7akpOkbjv2K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1441&quot; height=&quot;120&quot; data-origin-width=&quot;1441&quot; data-origin-height=&quot;120&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;명령줄 재구성 (UAC 재실행 준비)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ct7NQ5/dJMcagqRQ9o/tLV3aYsFnJW9pHkRkBAvBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ct7NQ5/dJMcagqRQ9o/tLV3aYsFnJW9pHkRkBAvBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ct7NQ5/dJMcagqRQ9o/tLV3aYsFnJW9pHkRkBAvBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fct7NQ5%2FdJMcagqRQ9o%2FtLV3aYsFnJW9pHkRkBAvBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1100&quot; height=&quot;180&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;180&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;UAC 재실행 (권한 없을 경우)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1091&quot; data-origin-height=&quot;16&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FgmwK/dJMcaaRKUJF/vRgYSNLQpss3DU4DG9yRb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FgmwK/dJMcaaRKUJF/vRgYSNLQpss3DU4DG9yRb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FgmwK/dJMcaaRKUJF/vRgYSNLQpss3DU4DG9yRb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFgmwK%2FdJMcaaRKUJF%2FvRgYSNLQpss3DU4DG9yRb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1091&quot; height=&quot;16&quot; data-origin-width=&quot;1091&quot; data-origin-height=&quot;16&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;에러 메시지 (&amp;rdquo;File not found OR Invalid argument&amp;rdquo;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1181&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oklg2/dJMcabQCEQd/6xuLCudEIfsK1TcIUmo3Q1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oklg2/dJMcabQCEQd/6xuLCudEIfsK1TcIUmo3Q1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oklg2/dJMcabQCEQd/6xuLCudEIfsK1TcIUmo3Q1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Foklg2%2FdJMcabQCEQd%2F6xuLCudEIfsK1TcIUmo3Q1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1181&quot; height=&quot;17&quot; data-origin-width=&quot;1181&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;잘못된 인자 팝업으로 표시&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1082&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nSAyM/dJMcafes8O5/u9jXH9sBAYCq8CAyVtMaM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nSAyM/dJMcafes8O5/u9jXH9sBAYCq8CAyVtMaM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nSAyM/dJMcafes8O5/u9jXH9sBAYCq8CAyVtMaM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnSAyM%2FdJMcafes8O5%2Fu9jXH9sBAYCq8CAyVtMaM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1082&quot; height=&quot;21&quot; data-origin-width=&quot;1082&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5. 복호화 기술 분석 (Decryption Strategy)&lt;/b&gt;&lt;/h3&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.1 복호화 가능성 분석&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;5.1.1 하이브리드 암호화 복호화 가능 원리&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;shell&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;복호화를 위한 키 체인: 
1. ECDH shared secret
2. SHA-256 파생 세션 키 (AES-128-CTR 키)
3. AES-128-CTR로 푸터 복호화
4. per-file AES-256 key + nonce 획득
5. AES-256-GCM 복호화
추출 성공 요인: 
- AES-128-CTR 키는 모든 파일에 공통 사용
- 메모리 덤프에서 키 획득 가능 
- ISAAC PRNG 상태 복구 불필요 (푸터에 암호화된 형태로 저장)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;&lt;b&gt;5.1.2 복호화 가능 시나리오 &lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;shell&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;시나리오 1: 메모리 포렌식
방법: 암호화 진행 중 메모리 덤프

대상: AES-128-CTR 키 (16바이트)

성공 확률: 높음 (랜섬웨어 프로세스 메모리에 상주)

시나리오 2: 바이너리 추출
방법: 랜섬웨어 바이너리 정적 분석

대상: ECDH 유도 값

성공 확률: 중간 (난독화 또는 동적 생성 가능)&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.2 AES-128 마스터 키 복구 메커니즘&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;5.2.1 메모리 포렌식 키 추출&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;// 메모리 덤프 파일 
// 키 검증 방법 
1. 테스트 파일의 푸터에서 암호화된 메타데이터 추출 
2. 추출한 키로 AES-128-CTR 복호화 시도 
3. 결과가 32바이트 + 8바이트 구조인지 확인 
4. 추출한 AES-256 키로 파일 복호화 
5. 매직 바이트 검증&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.3 자동화 복호화 스크립트 개발&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;5.3.1 복호화 체인&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;[ key.json ] 
&amp;darr; 
AES-128-CTR key 
&amp;darr; 
┌──────────────────────────────┐ 
│&amp;nbsp;&amp;nbsp;footer encrypted_metadata&amp;nbsp;&amp;nbsp; │ 
│&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (40 bytes)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; │ 
└──────────────────────────────┘ 
&amp;darr; 
AES-128-CTR 복호화 
&amp;darr; 
┌──────────────────────────────┐ 
│&amp;nbsp;&amp;nbsp;AES-256 file key (32 bytes) │ 
│&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GCM nonce (8 bytes)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; │ 
└──────────────────────────────┘ 
&amp;darr; 
AES-256-GCM 
&amp;darr; 
[&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 원본 파일 데이터 복원&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;5.3.2 핵심 복호화 로직&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 키 로드&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;def load_keys(json_path): 
&quot;&quot;&quot;Load decryption keys from JSON file&quot;&quot;&quot; 
	with open(json_path, 'r') as f: 
keys = json.load(f) 
aes128_key = bytes.fromhex(keys['aes128_ctr_key']) 
if len(aes128_key) != 16: 
	raise ValueError(f&quot;Invalid AES-128 key length&quot;) 
return aes128_key&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;2. 푸터 파싱&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;# 파일 끝 108바이트 읽기 
footer = data[-108:] 
ciphertext = data[:-108] 
# 푸터 구조 파싱 
magic1 = footer[0:8] 
original_size = struct.unpack('&amp;lt;Q', footer[8:16])[0] 
encrypted_metadata = footer[16:56] 
# 40 bytes 
aes_ctr_iv = footer[56:72] 
# 16 bytes 
const1 = footer[72:88] 
const2 = footer[88:104] 
magic2 = footer[104:108]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;3. AES-128-CTR 복호화 (메타데이터 언래핑) &lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;# AES-128-CTR 초기화 
ctr = Counter.new(128, initial_value=int.from_bytes(aes_ctr_iv, 'big')) 
cipher = AES.new(aes128_key, AES.MODE_CTR, counter=ctr) 
# 메타데이터 복호화 
decrypted_metadata = cipher.decrypt(encrypted_metadata) 
# AES-256 키와 GCM nonce 추출 
aes256_key = decrypted_metadata[:32] gcm_nonce = decrypted_metadata[32:40]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;4. AES-256-GCM 복호화 (파일 데이터) &lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# AES-256-GCM 초기화 
cipher_text = AES.new(aes256_key, AES.MODE_GCM, nonce=gcm_nonce) 
# 태그 추출
ciphertext, tag = ciphertext[:-16], ciphertext[-16:]
# 파일 데이터 복호화 
plaintext = cipher.decrypt_and_verify(ciphertext, tag)
# 원본 크기로 자르기 
plaintext = plaintext[:original_size]&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.4 무결성 검증&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;5.4.1 매직 바이트 테이블&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;파일 유형&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;매직 넘버 (Hex)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;PNG&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;89 50 4E 47 0D 0A 1A 0A&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;PNG 이미지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;JPG/JPEG&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;FF D8 FF E0/E1/DB&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;JPEG 이미지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;PDF&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;25 50 44 46&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;PDF 문서&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;ZIP&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;50 4B 03 04&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;ZIP 압축 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;DOCX/XLSX&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;50 4B 03 04&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;Office Open XML (ZIP 기반)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6. 요약 및 결론 (Conclusion)&lt;/b&gt;&lt;/h3&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.1 최종 평가&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Mallox 랜섬웨어 최신 버전은&amp;nbsp;&lt;b&gt;AES-256-GCM + AES-128-CTR 하이브리드 암호화 구조&lt;/b&gt;를 가지고 있으며, ISAAC PRNG 기반 파일별 독립 키 생성을 통한 암호화를 구현합니다. &lt;span&gt;메모리 포렌식을 통해 ECDH 연산 결과 또는 &lt;/span&gt;&lt;span&gt;SHA-256 파생 세션 키를 확보하여 &lt;/span&gt;&lt;span&gt;AES-128-CTR 레이어를 해제하고, &lt;/span&gt;&lt;span&gt;per-file &lt;b&gt;AES-256-GCM&lt;/b&gt; 키를 추출하여 복호화에 성공했습니다.&lt;/span&gt; 4개 테스트 파일 모두 매직 바이트가 검증되었으며, 4개 테스트 파일 모두 &lt;b&gt;매직 바이트/파일 포맷이 정상 복원&lt;/b&gt;됨을 확인하였다.&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.2 대응 가이드&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;6.2.1 예방적 조치&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;메모리 보호&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AES-128-CTR 키 메모리 상주 차단&lt;/li&gt;
&lt;li&gt;프로세스 메모리 실시간 모니터링&lt;/li&gt;
&lt;li&gt;의심 프로세스 즉시 덤프&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;행위 기반 탐지&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대량 파일 접근 패턴 탐지&lt;/li&gt;
&lt;li&gt;.mallab 확장자 추가 차단&lt;/li&gt;
&lt;li&gt;ISAAC PRNG 호출 패턴 탐지&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;네트워크 방어&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RDP 접근 제한 및 MFA 적용&lt;/li&gt;
&lt;li&gt;의심 PowerShell 실행 차단&lt;/li&gt;
&lt;li&gt;C&amp;amp;C 통신 탐지&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;백업 전략&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실시간 오프라인 백업&lt;/li&gt;
&lt;li&gt;VSS 보호 솔루션&lt;/li&gt;
&lt;li&gt;immutable 백업 스토리지&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;6.2.2 사후 대응&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;초동 조치 :&lt;/b&gt;&amp;nbsp;감염 발견 즉시 시스템 격리,&amp;nbsp;&lt;b&gt;메모리 덤프 수행 (시스템 종료 금지!)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;키 복구 :&lt;/b&gt; 메모리 포렌식으로 AES-128-CTR 키 추출 (패턴: 16바이트 높은 엔트로피)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;복호화 수행 :&lt;/b&gt;&amp;nbsp;추출한 키로 자동화 스크립트 실행, 매직 바이트 검증&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시스템 복구 :&lt;/b&gt;&amp;nbsp;복호화 성공 후 시스템 재구축, 초기 침투 경로 분석 및 패치&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.3 탐지 시그니처&lt;/b&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;탐지 요소&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;값 / 패턴&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;확장자&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;.mallab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;푸터 Magic1&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;0x0201020100000000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;메타데이터 길이&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;40 bytes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;AES-CTR IV 길이&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;16 bytes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;GCM Nonce 길이&lt;/td&gt;
&lt;td style=&quot;text-align: justify;&quot;&gt;8 bytes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.4 초기 vs 최신 Mallox 차이&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Mallox&amp;nbsp;랜섬웨어는&amp;nbsp;버전별로&amp;nbsp;암호화&amp;nbsp;구조가&amp;nbsp;진화해&amp;nbsp;왔다.&lt;/p&gt;
&lt;pre id=&quot;code_1771654063600&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[초기 버전 (2021~2022)]
&amp;bull; 파일 암호화: ChaCha20
&amp;bull; 키 보호: ECDH + SHA-256
&amp;bull; 일부 버전은 AES-128-CTR을 key wrapping에 사용

[중기 버전]
&amp;bull; ChaCha20 유지
&amp;bull; AES-CTR 기반 키 래핑 구조 강화

[최신 버전 (v12 이후)]
&amp;bull; 파일 암호화: AES-256-GCM
&amp;bull; 키 보호: ECDH (X25519) + SHA-256
&amp;bull; per-file 키 생성: ISAAC PRNG
&amp;bull; AES-128-CTR 레이어로 파일 키 래핑

즉, Mallox는 단순 ChaCha 기반 랜섬웨어에서
AEAD(AES-GCM) 기반 고급 하이브리드 구조로
진화하였다.&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.4 결론&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Mallox 랜섬웨어는&amp;nbsp;&lt;b&gt;AES-256-GCM과 AES-128-CTR을 결합한 정교한 하이브리드 암호화 구조&lt;/b&gt;를 가지고 있으며, ISAAC PRNG를 통한 파일별 독립 키 생성을 구현합니다. 2021년 등장 이후 지속적으로 업그레이드되어 &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;Mallox 최신 버전은 &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;ECDH 기반 세션 키 파생 구조와 &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;AES-256-GCM AEAD 암호화를 결합하여 &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;기밀성(confidentiality)과 무결성(integrity)을 &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;동시에 보장하는 구조를 채택하였다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>랜섬웨어 분석 보고서</category>
      <author>geonwoo9643</author>
      <guid isPermaLink="true">https://mzcompany.tistory.com/16</guid>
      <comments>https://mzcompany.tistory.com/16#entry16comment</comments>
      <pubDate>Mon, 9 Feb 2026 04:07:40 +0900</pubDate>
    </item>
    <item>
      <title>INC 랜섬웨어 분석 보고서</title>
      <link>https://mzcompany.tistory.com/15</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 1. 개요 (Overview)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.1 분석 배경&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;INC&lt;/b&gt; 랜섬웨어는 2023년 7월에 처음 등장한 RaaS(Ransomware-as-a-Service) 운영 그룹으로, AES 대칭 암호화와 RSA 비대칭 암호화를 결합한 하이브리드 암호화 방식을 채택하고 있습니다. 부분 암호화(Intermittent Encryption)와 멀티스레딩 기법을 통해 고속 암호화를 구현하며, CVE-2023-3519(Citrix NetScaler) 취약점을 악용하여 초기 침투를 수행합니다. 본 보고서는 INC 랜섬웨어의 암호화 메커니즘을 정밀 분석하고, 키 복구 전략 및 복호화 가능성을 평가합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.2 핵심 요약&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;암호화 메커니즘&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AES-256 대칭 암호화를 통한 파일별 고속 암호화&lt;/li&gt;
&lt;li&gt;RSA-2048 비대칭 암호화로 AES 키 보호&lt;/li&gt;
&lt;li&gt;부분 암호화(Intermittent Encryption) 기법으로 암호화 속도 극대화&lt;/li&gt;
&lt;li&gt;파일별 독립적인 AES 키 생성 (CryptGenRandom API)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;회피 기법&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;멀티스레딩 (CPU 코어 수 &amp;times; 4 스레드)&lt;/li&gt;
&lt;li&gt;VSS(Volume Shadow Copy) 삭제 시도&lt;/li&gt;
&lt;li&gt;특정 파일/디렉터리 제외 (.msi, .exe, .dll, Windows, Program Files 등)&lt;/li&gt;
&lt;li&gt;프린터 자동 랜섬 노트 출력&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;복호화 가능성&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CryptGenRandom API 호출 시점의 파일별 AES 키를 API 후킹으로 실시간 캡처 시 완벽한 복호화 가능&lt;/li&gt;
&lt;li&gt;공격자 RSA 개인키 없이는 복호화 불가능&lt;/li&gt;
&lt;li&gt;본 분석에서 개발한 자동화 복호화 스크립트로 실증 검증 완료&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 2. 식별 정보 (Identification)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Malware Family&lt;/b&gt;: INC Ransom&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Filetype&lt;/b&gt;: PE32 (Windows Executable)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Hash (SHA256)&lt;/b&gt;: 834c5f094c4a2db0f520962341b108af685efd346e5b6622eb2331b3ffa09039&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Extension&lt;/b&gt;: .INC&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Target&lt;/b&gt;: Windows 기반 시스템 (Linux 변형 존재)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;First Seen&lt;/b&gt;: July 2023&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Ransom Note&lt;/b&gt;: INC-README.TXT, INC-README.HTML&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 3. 분석 환경 및 도구 (Tools)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;도구명 (Tool)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;용도 (Purpose)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;정적 분석&lt;/td&gt;
&lt;td&gt;IDA Pro&lt;/td&gt;
&lt;td&gt;AES/RSA 구현 루틴 및 암호화 로직 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;동적 분석&lt;/td&gt;
&lt;td&gt;CryptGenRandom API Hooking&lt;/td&gt;
&lt;td&gt;실시간 AES 키 추출&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;행위 분석&lt;/td&gt;
&lt;td&gt;Process Monitor&lt;/td&gt;
&lt;td&gt;파일 I/O 및 암호화 행위 추적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;암호 분석&lt;/td&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;td&gt;AES 복호화 스크립트 개발&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;메모리 분석&lt;/td&gt;
&lt;td&gt;Volatility&lt;/td&gt;
&lt;td&gt;메모리 덤프에서 키 추출&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 4. 암호화 기술 분석 (Technical Analysis) &lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 4.1 전체 암호화 워크플로우&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1770551586476&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[실행 단계]
1. 초기화
   - 명령줄 인자 파싱 (암호화 모드 설정)
   - CSP(Cryptographic Service Provider) 획득
   - RSA 키 쌍 생성 (Cpub, Cpriv)
   &amp;darr;
2. 시스템 무력화
   - VSS(Volume Shadow Copy) 삭제 시도
   - 특정 프로세스/서비스 종료 (SQL Server, Exchange, VSS 등)
   - 방화벽 무력화
   &amp;darr;
3. 멀티스레드 암호화 엔진 초기화
   - 스레드 수 = CPU 코어 수 &amp;times; 4
   - 파일 큐 관리 시스템 구축
   &amp;darr;
4. 파일 탐색 및 암호화
   - 재귀적 디렉터리 탐색
   - 파일 필터링 (.msi, .exe, .dll, .inc 제외)
   - 파일별 AES 키 생성 및 암호화 수행
   - 파일명 변경 (원본.확장자 &amp;rarr; 원본.확장자.INC)
   &amp;darr;
5. 랜섬 노트 생성
   - INC-README.TXT 생성
   - INC-README.HTML 생성
   - 프린터로 랜섬 노트 자동 출력
   - 배경화면 변경&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.2 키 생성 및 관리 (Key Generation)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.2.1 하이브리드 암호화 구조&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;RSA 키 쌍 생성&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770551609163&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[초기 실행 시]
1. 피해자 기기별 RSA 키 쌍 생성
   - Cpub.key (Client Public Key) - 피해자 공개키
   - Cpriv.key (Client Private Key) - 피해자 개인키

2. 공격자 RSA 키 쌍 (하드코딩)
   - Spub.key (Server Public Key) - 공격자 공개키 (바이너리 내장)
   - Spriv.key (Server Private Key) - 공격자 개인키 (C&amp;amp;C 서버 보관)

3. Cpriv.key 보호
   - Cpriv_encrypted = RSA_Encrypt(Cpriv.key, Spub.key)
   - 암호화된 Cpriv.key를 시스템에 저장&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;파일별 AES 키 생성&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770551622045&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[각 파일 암호화 시]
1. CryptGenRandom API 호출
   - 32바이트 랜덤 AES 키 생성 (AES-256)
   ★ API 후킹 지점 ★

2. AES 키로 파일 암호화
   - AES-256 CBC 모드
   - IV(Initialization Vector) 생성 (16바이트)

3. AES 키 보호
   - AES_key_encrypted = RSA_Encrypt(AES_key, Cpub.key)
   - 암호화된 AES 키를 파일 메타데이터에 저장&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;키 체인 구조&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770551634803&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;원본 파일
    &amp;darr; [AES-256 암호화]
암호화된 파일
    &amp;darr;
AES 키 (32바이트)
    &amp;darr; [RSA-2048 암호화, Cpub.key 사용]
암호화된 AES 키 (파일에 저장)
    &amp;darr;
Cpub.key (피해자 공개키)
    &amp;darr;
Cpriv.key (피해자 개인키)
    &amp;darr; [RSA-2048 암호화, Spub.key 사용]
암호화된 Cpriv.key
    &amp;darr;
Spub.key (공격자 공개키, 하드코딩)
    &amp;darr;
Spriv.key (공격자 개인키, C&amp;amp;C 서버 보관)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.2.2 공격자 공개키 (하드코딩)&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770551656304&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 바이너리 내 하드코딩된 공격자 RSA 공개키
ATTACKER_RSA_PUBKEY = bytes.fromhex(
    &quot;308201...&quot;  # 2048비트 RSA 공개키 (X.509 DER 포맷)
)&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.3 AES 암호화 알고리즘&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.3.1 AES-256 구조&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;암호화 모드: CBC (Cipher Block Chaining)&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770551682395&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;AES-256 CBC 파라미터:
- Key: 32바이트 (256비트)
- IV: 16바이트 (128비트)
- Block Size: 16바이트 (128비트)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CBC 모드 동작&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770551701371&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 첫 번째 블록
C[0] = AES_Encrypt(P[0] &amp;oplus; IV, Key)

// 이후 블록
C[i] = AES_Encrypt(P[i] &amp;oplus; C[i-1], Key)

여기서:
- P[i]: i번째 평문 블록
- C[i]: i번째 암호문 블록
- &amp;oplus;: XOR 연산&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.3.2 부분 암호화 (Intermittent Encryption)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;INC 랜섬웨어는 암호화 속도를 극대화하기 위해 &lt;b&gt;부분 암호화&lt;/b&gt; 기법을 사용합니다.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Fast Encryption Mode&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770551721038&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;암호화 대상: 각 파일의 처음 1,000,000 바이트만 암호화
건너뛰기: 1,000,000 바이트 이후의 데이터는 암호화하지 않음

[예시]
파일 크기 5MB:
- 암호화: 0 ~ 1,000,000 바이트
- 미암호화: 1,000,000 ~ 5,242,880 바이트&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Medium Encryption Mode&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770551733535&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;암호화 대상: 1,000,000 바이트 단위로 선택적 암호화
건너뛰기: 1,000,000 바이트마다 일부 구간 건너뜀

[예시]
파일 크기 10MB:
- 암호화: 0 ~ 1,000,000 바이트
- 건너뛰기: 1,000,000 ~ 2,000,000 바이트
- 암호화: 2,000,000 ~ 3,000,000 바이트
- 건너뛰기: 3,000,000 ~ 4,000,000 바이트
- ...&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;명령줄 인자로 암호화 모드 선택&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770551746562&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Fast mode
INC_ransomware.exe -m fast

# Medium mode
INC_ransomware.exe -m medium

# Full mode (전체 암호화)
INC_ransomware.exe -m full4.3.3 AES 암호화 수행
Windows CryptoAPI 사용&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.3.3 AES 암호화 수행&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Windows CryptoAPI 사용&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770551762876&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// CSP 획득
CryptAcquireContext(&amp;amp;hProv, NULL, NULL, PROV_RSA_AES, CRYPT_VERIFYCONTEXT);

// 32바이트 AES 키 생성
CryptGenRandom(hProv, 32, pbKeyBlob);

// AES 키 객체 생성
CryptImportKey(hProv, pbKeyBlob, 32, 0, 0, &amp;amp;hKey);

// CBC 모드 설정
DWORD dwMode = CRYPT_MODE_CBC;
CryptSetKeyParam(hKey, KP_MODE, (BYTE*)&amp;amp;dwMode, 0);

// IV 설정
CryptSetKeyParam(hKey, KP_IV, pbIV, 0);

// 파일 암호화
CryptEncrypt(hKey, 0, TRUE, 0, pbData, &amp;amp;dwDataLen, dwBufLen);&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.4 파일 처리 아키텍처&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.4.1 멀티스레드 암호화 엔진&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770551788452&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[멀티스레드 구조]
Main Thread
    &amp;darr;
CPU 코어 수 탐지 (GetSystemInfo)
    &amp;darr;
스레드 생성 (코어 수 &amp;times; 4)
    &amp;darr;
┌─────────┬─────────┬─────────┬─────────┐
│Thread 1 │Thread 2 │Thread 3 │Thread 4 │ ...
└─────────┴─────────┴─────────┴─────────┘
     &amp;darr;          &amp;darr;          &amp;darr;          &amp;darr;
파일 큐에서 파일 가져오기 (Thread-safe Queue)
     &amp;darr;          &amp;darr;          &amp;darr;          &amp;darr;
파일 암호화 수행
     &amp;darr;          &amp;darr;          &amp;darr;          &amp;darr;
완료 카운터 증가&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스레드 생성 코드 예시 &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770551803292&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// CPU 코어 수 탐지
SYSTEM_INFO si;
GetSystemInfo(&amp;amp;si);
DWORD dwThreadCount = si.dwNumberOfProcessors * 4;

// 스레드 생성
for (DWORD i = 0; i &amp;lt; dwThreadCount; i++) {
    CreateThread(NULL, 0, EncryptWorkerThread, &amp;amp;queueData, 0, NULL);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.4.2 파일 처리 프로세스&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770551825187&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[파일 암호화 프로세스]
1. 파일 탐색
   - FindFirstFile / FindNextFile
   - 재귀적 디렉터리 탐색
   &amp;darr;
2. 파일 필터링
   - 제외 확장자: .msi, .exe, .dll, .inc
   - 제외 디렉터리: Windows, Program Files, $RECYCLE.BIN, appdata
   &amp;darr;
3. 파일 열기
   - CreateFile (GENERIC_READ | GENERIC_WRITE)
   &amp;darr;
4. CryptGenRandom 호출
   - 32바이트 AES 키 생성
   ★ API 후킹 지점 ★
   &amp;darr;
5. AES 암호화
   - CBC 모드 초기화
   - 부분/전체 암호화 수행
   &amp;darr;
6. 메타데이터 저장
   - 암호화된 AES 키 (RSA로 암호화됨)
   - IV (16바이트)
   - 파일 크기
   - 암호화 모드 플래그
   &amp;darr;
7. 파일명 변경
   원본.확장자 &amp;rarr; 원본.확장자.INC
   &amp;darr;
8. 파일 핸들 닫기&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.4.3 파일 메타데이터 구조&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770551840073&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[암호화된 파일 구조]
┌─────────────────────────────────────┐
│  암호화된 파일 데이터                │
│  (AES-256 CBC)                      │
├─────────────────────────────────────┤
│  메타데이터 (Footer)                 │
│  ┌───────────────────────────────┐  │
│  │ 암호화된 AES 키 (256바이트)   │  │ &amp;larr; RSA-2048로 암호화
│  ├───────────────────────────────┤  │
│  │ IV (16바이트)                 │  │
│  ├───────────────────────────────┤  │
│  │ 원본 파일 크기 (8바이트)      │  │
│  ├───────────────────────────────┤  │
│  │ 암호화 모드 플래그 (4바이트)  │  │
│  ├───────────────────────────────┤  │
│  │ 매직 바이트 &quot;INC\x00&quot; (4바이트)│  │
│  └───────────────────────────────┘  │
└─────────────────────────────────────┘&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.4.4 시스템 무력화&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;VSS 삭제&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770551896056&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vssadmin.exe Delete Shadows /All /Quiet
wmic.exe shadowcopy delete&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프로세스/서비스 종료&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770551908235&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;대상 프로세스:
- SQL Server (sqlservr.exe, sqlwriter.exe)
- Exchange (MSExchangeIS.exe, MSExchangeSA.exe)
- Backup (veeam.exe, acronis.exe)
- VSS (vss.exe)
- Antivirus (MsMpEng.exe, McShield.exe)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.4.5 랜섬 노트 생성&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;랜섬 노트 경로&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770551921576&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;각 암호화된 디렉터리마다:
- INC-README.TXT
- INC-README.HTML&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프린터 자동 출력&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770551933057&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 네트워크 프린터 탐색
EnumPrinters(PRINTER_ENUM_NETWORK, NULL, 1, ...);

// 각 프린터로 랜섬 노트 출력
for each printer:
    OpenPrinter(printerName, &amp;amp;hPrinter, NULL);
    StartDocPrinter(hPrinter, 1, &amp;amp;docInfo);
    WritePrinter(hPrinter, ransomNoteContent, ...);
    EndDocPrinter(hPrinter);
    ClosePrinter(hPrinter);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;배경화면 변경&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770551944756&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 배경화면을 랜섬 노트 이미지로 변경
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, &quot;C:\\INC-WALLPAPER.bmp&quot;, SPIF_UPDATEINIFILE);&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.5 정적 분석&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;main 함수&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;암호화 컨텍스트 획득&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1057&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnh8XB/dJMcaaRKOSz/xy7JFkANr2TZh2tCzM2W5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnh8XB/dJMcaaRKOSz/xy7JFkANr2TZh2tCzM2W5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnh8XB/dJMcaaRKOSz/xy7JFkANr2TZh2tCzM2W5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbnh8XB%2FdJMcaaRKOSz%2Fxy7JFkANr2TZh2tCzM2W5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1057&quot; height=&quot;202&quot; data-origin-width=&quot;1057&quot; data-origin-height=&quot;202&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;커맨드 라인 파싱&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;77&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2SeEn/dJMcafS2w9M/LVX65qRVUmcseL3YqKXCQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2SeEn/dJMcafS2w9M/LVX65qRVUmcseL3YqKXCQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2SeEn/dJMcafS2w9M/LVX65qRVUmcseL3YqKXCQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2SeEn%2FdJMcafS2w9M%2FLVX65qRVUmcseL3YqKXCQK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1087&quot; height=&quot;77&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;77&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1047&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0ek5Z/dJMcabiOTKv/hrkGRkqkKwGK3Ky0cx8370/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0ek5Z/dJMcabiOTKv/hrkGRkqkKwGK3Ky0cx8370/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0ek5Z/dJMcabiOTKv/hrkGRkqkKwGK3Ky0cx8370/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0ek5Z%2FdJMcabiOTKv%2FhrkGRkqkKwGK3Ky0cx8370%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1047&quot; height=&quot;17&quot; data-origin-width=&quot;1047&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1097&quot; data-origin-height=&quot;22&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qwZ1X/dJMcajgMdLL/5ApwJxkuRBVJ224PSbYzh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qwZ1X/dJMcajgMdLL/5ApwJxkuRBVJ224PSbYzh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qwZ1X/dJMcajgMdLL/5ApwJxkuRBVJ224PSbYzh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqwZ1X%2FdJMcajgMdLL%2F5ApwJxkuRBVJ224PSbYzh0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1097&quot; height=&quot;22&quot; data-origin-width=&quot;1097&quot; data-origin-height=&quot;22&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G525M/dJMcajgMdNO/YA6Hx8HY4L75Aqa3kYwZ50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G525M/dJMcajgMdNO/YA6Hx8HY4L75Aqa3kYwZ50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G525M/dJMcajgMdNO/YA6Hx8HY4L75Aqa3kYwZ50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG525M%2FdJMcajgMdNO%2FYA6Hx8HY4L75Aqa3kYwZ50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1060&quot; height=&quot;17&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1063&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxdu3A/dJMcachIjEQ/UIzGeihvrUgKgkJjg8ajT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxdu3A/dJMcachIjEQ/UIzGeihvrUgKgkJjg8ajT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxdu3A/dJMcachIjEQ/UIzGeihvrUgKgkJjg8ajT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcxdu3A%2FdJMcachIjEQ%2FUIzGeihvrUgKgkJjg8ajT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1063&quot; height=&quot;20&quot; data-origin-width=&quot;1063&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1068&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bt9hTj/dJMcaaqE1vX/iRpUOH8vlL05z3wq5YtUU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bt9hTj/dJMcaaqE1vX/iRpUOH8vlL05z3wq5YtUU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bt9hTj/dJMcaaqE1vX/iRpUOH8vlL05z3wq5YtUU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbt9hTj%2FdJMcaaqE1vX%2FiRpUOH8vlL05z3wq5YtUU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1068&quot; height=&quot;18&quot; data-origin-width=&quot;1068&quot; data-origin-height=&quot;18&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1076&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHgP0J/dJMcacB0L7V/nnSuzXr29bG7ZKo6BJ4ii1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHgP0J/dJMcacB0L7V/nnSuzXr29bG7ZKo6BJ4ii1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHgP0J/dJMcacB0L7V/nnSuzXr29bG7ZKo6BJ4ii1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHgP0J%2FdJMcacB0L7V%2FnnSuzXr29bG7ZKo6BJ4ii1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1076&quot; height=&quot;17&quot; data-origin-width=&quot;1076&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1065&quot; data-origin-height=&quot;16&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x3h6B/dJMcajukCbP/ejhcU91YOe0kZOKiUafMsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x3h6B/dJMcajukCbP/ejhcU91YOe0kZOKiUafMsK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x3h6B/dJMcajukCbP/ejhcU91YOe0kZOKiUafMsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx3h6B%2FdJMcajukCbP%2FejhcU91YOe0kZOKiUafMsK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1065&quot; height=&quot;16&quot; data-origin-width=&quot;1065&quot; data-origin-height=&quot;16&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;23&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/skU7D/dJMcacvgvIa/Mj27cTScO0p6kJnzvin0dk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/skU7D/dJMcacvgvIa/Mj27cTScO0p6kJnzvin0dk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/skU7D/dJMcacvgvIa/Mj27cTScO0p6kJnzvin0dk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FskU7D%2FdJMcacvgvIa%2FMj27cTScO0p6kJnzvin0dk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1072&quot; height=&quot;23&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;23&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;201&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjOn1J/dJMcafFvbwv/IKV0CiPBknuXg4suroOmL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjOn1J/dJMcafFvbwv/IKV0CiPBknuXg4suroOmL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjOn1J/dJMcafFvbwv/IKV0CiPBknuXg4suroOmL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjOn1J%2FdJMcafFvbwv%2FIKV0CiPBknuXg4suroOmL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1087&quot; height=&quot;201&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;201&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1770553181401&quot; class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;커맨드라인 별 동작
--sup : Stop Using Process (파일 잠금 프로세스 종료 활성화)
--ens : Encrypt Network Shares (네트워크 공유 폴더 암호화)
--lhd : Load Hidden Drives (숨겨진 드라이브 암호화)
--debug : 디버그 모드 활성화
--kill : 프로세스/서비스 강제 종료
--safe-mode 플래그 : 안전모드에서 실행
--hide 플래그 : 콘솔 창 숨기기
--mode f : Fast (처음 1MB만), m : Medium (선택적), s : slow (전체)
--mode s : Standard mode (1MB씩 선택적 암호화), 그 외 : Full mode
--file : 단일 파일 암호화
--dir : 디렉터리 재귀 암호화&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;휴지통 비우기 (복구 방지)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;58&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ck4uVe/dJMcacPymH7/JkdvLBdlnfuityhBZU2251/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ck4uVe/dJMcacPymH7/JkdvLBdlnfuityhBZU2251/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ck4uVe/dJMcacPymH7/JkdvLBdlnfuityhBZU2251/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fck4uVe%2FdJMcacPymH7%2FJkdvLBdlnfuityhBZU2251%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;962&quot; height=&quot;58&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;58&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로세스 종료&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;967&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vmoYc/dJMcacPymIo/RyxmTnNkERVjDNQ8UyLH4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vmoYc/dJMcacPymIo/RyxmTnNkERVjDNQ8UyLH4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vmoYc/dJMcacPymIo/RyxmTnNkERVjDNQ8UyLH4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvmoYc%2FdJMcacPymIo%2FRyxmTnNkERVjDNQ8UyLH4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;967&quot; height=&quot;17&quot; data-origin-width=&quot;967&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1090&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjPM40/dJMcacPymIy/xkmK0pA0TTeVDLOKUGSlJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjPM40/dJMcacPymIy/xkmK0pA0TTeVDLOKUGSlJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjPM40/dJMcacPymIy/xkmK0pA0TTeVDLOKUGSlJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjPM40%2FdJMcacPymIy%2FxkmK0pA0TTeVDLOKUGSlJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1090&quot; height=&quot;500&quot; data-origin-width=&quot;1090&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서비스 종료&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;985&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMNNm4/dJMcaihUJYY/1ietWjkUjOZUJLtKg0de2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMNNm4/dJMcaihUJYY/1ietWjkUjOZUJLtKg0de2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMNNm4/dJMcaihUJYY/1ietWjkUjOZUJLtKg0de2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMNNm4%2FdJMcaihUJYY%2F1ietWjkUjOZUJLtKg0de2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;985&quot; height=&quot;21&quot; data-origin-width=&quot;985&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1127&quot; data-origin-height=&quot;453&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bk4tHm/dJMcahXCDbi/jzgIxNqlCJMHWH8lIaKhAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bk4tHm/dJMcahXCDbi/jzgIxNqlCJMHWH8lIaKhAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bk4tHm/dJMcahXCDbi/jzgIxNqlCJMHWH8lIaKhAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbk4tHm%2FdJMcahXCDbi%2FjzgIxNqlCJMHWH8lIaKhAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1127&quot; height=&quot;453&quot; data-origin-width=&quot;1127&quot; data-origin-height=&quot;453&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;992&quot; data-origin-height=&quot;302&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnT3N0/dJMcaiWuAYU/Gwr4ccPB9SZBqk5zdMVaA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnT3N0/dJMcaiWuAYU/Gwr4ccPB9SZBqk5zdMVaA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnT3N0/dJMcaiWuAYU/Gwr4ccPB9SZBqk5zdMVaA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnT3N0%2FdJMcaiWuAYU%2FGwr4ccPB9SZBqk5zdMVaA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;992&quot; height=&quot;302&quot; data-origin-width=&quot;992&quot; data-origin-height=&quot;302&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;I/O Completion Port 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1045&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfhKwh/dJMcaiWuAY3/z38KKLLxWqLmPwBtOK8uWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfhKwh/dJMcaiWuAY3/z38KKLLxWqLmPwBtOK8uWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfhKwh/dJMcaiWuAY3/z38KKLLxWqLmPwBtOK8uWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfhKwh%2FdJMcaiWuAY3%2Fz38KKLLxWqLmPwBtOK8uWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1045&quot; height=&quot;21&quot; data-origin-width=&quot;1045&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1162&quot; data-origin-height=&quot;318&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ho03Z/dJMcaiWuAZd/dfaJPKJELKUdBeU0CyxVk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ho03Z/dJMcaiWuAZd/dfaJPKJELKUdBeU0CyxVk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ho03Z/dJMcaiWuAZd/dfaJPKJELKUdBeU0CyxVk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHo03Z%2FdJMcaiWuAZd%2FdfaJPKJELKUdBeU0CyxVk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1162&quot; height=&quot;318&quot; data-origin-width=&quot;1162&quot; data-origin-height=&quot;318&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;워커 스레드&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1277&quot; data-origin-height=&quot;23&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WjpGe/dJMcajgMeho/QI9kmuUTOWqreTaTCPMUK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WjpGe/dJMcajgMeho/QI9kmuUTOWqreTaTCPMUK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WjpGe/dJMcajgMeho/QI9kmuUTOWqreTaTCPMUK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWjpGe%2FdJMcajgMeho%2FQI9kmuUTOWqreTaTCPMUK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1277&quot; height=&quot;23&quot; data-origin-width=&quot;1277&quot; data-origin-height=&quot;23&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1065&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bE80Rd/dJMcagdmhs1/sF9UmmP1wlOWnfZuUD2T40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bE80Rd/dJMcagdmhs1/sF9UmmP1wlOWnfZuUD2T40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bE80Rd/dJMcagdmhs1/sF9UmmP1wlOWnfZuUD2T40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbE80Rd%2FdJMcagdmhs1%2FsF9UmmP1wlOWnfZuUD2T40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1065&quot; height=&quot;20&quot; data-origin-width=&quot;1065&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1143&quot; data-origin-height=&quot;41&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yNEnE/dJMcafFvb8y/m9sdi00kNvP4FygKJHhVCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yNEnE/dJMcafFvb8y/m9sdi00kNvP4FygKJHhVCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yNEnE/dJMcafFvb8y/m9sdi00kNvP4FygKJHhVCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyNEnE%2FdJMcafFvb8y%2Fm9sdi00kNvP4FygKJHhVCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1143&quot; height=&quot;41&quot; data-origin-width=&quot;1143&quot; data-origin-height=&quot;41&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AES-CBC 암호화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMK9sZ/dJMcafS2xSN/KBiFgjkYiUT0oYGkBfvs9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMK9sZ/dJMcafS2xSN/KBiFgjkYiUT0oYGkBfvs9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMK9sZ/dJMcafS2xSN/KBiFgjkYiUT0oYGkBfvs9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMK9sZ%2FdJMcafS2xSN%2FKBiFgjkYiUT0oYGkBfvs9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1060&quot; height=&quot;480&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AES 카운터 블록 암호화 (128비트, 14라운드)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1058&quot; data-origin-height=&quot;318&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGODqq/dJMcadAQNEm/ukkhpdYBtJnMstM1ss8lVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGODqq/dJMcadAQNEm/ukkhpdYBtJnMstM1ss8lVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGODqq/dJMcadAQNEm/ukkhpdYBtJnMstM1ss8lVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGODqq%2FdJMcadAQNEm%2FukkhpdYBtJnMstM1ss8lVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1058&quot; height=&quot;318&quot; data-origin-width=&quot;1058&quot; data-origin-height=&quot;318&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1046&quot; data-origin-height=&quot;295&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mwUdF/dJMcacB0MUr/kUDNYVPwr2dNObZLfUmKmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mwUdF/dJMcacB0MUr/kUDNYVPwr2dNObZLfUmKmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mwUdF/dJMcacB0MUr/kUDNYVPwr2dNObZLfUmKmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmwUdF%2FdJMcacB0MUr%2FkUDNYVPwr2dNObZLfUmKmk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1046&quot; height=&quot;295&quot; data-origin-width=&quot;1046&quot; data-origin-height=&quot;295&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1061&quot; data-origin-height=&quot;577&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xmhoz/dJMcahJ6zPK/nsL44hdu8kHb6PQm3zOGxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xmhoz/dJMcahJ6zPK/nsL44hdu8kHb6PQm3zOGxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xmhoz/dJMcahJ6zPK/nsL44hdu8kHb6PQm3zOGxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxmhoz%2FdJMcahJ6zPK%2FnsL44hdu8kHb6PQm3zOGxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1061&quot; height=&quot;577&quot; data-origin-width=&quot;1061&quot; data-origin-height=&quot;577&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;콘솔 창 숨기기 (탐지 회피)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;968&quot; data-origin-height=&quot;42&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bajWSJ/dJMcadVaLnb/FzYgjCflDZ2mNfF9mudG21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bajWSJ/dJMcadVaLnb/FzYgjCflDZ2mNfF9mudG21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bajWSJ/dJMcadVaLnb/FzYgjCflDZ2mNfF9mudG21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbajWSJ%2FdJMcadVaLnb%2FFzYgjCflDZ2mNfF9mudG21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;968&quot; height=&quot;42&quot; data-origin-width=&quot;968&quot; data-origin-height=&quot;42&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;파일 암호화&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;16&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwRK8X/dJMcabQCyNh/VTBMQjkjQcWJxWE5YGFBXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwRK8X/dJMcabQCyNh/VTBMQjkjQcWJxWE5YGFBXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwRK8X/dJMcabQCyNh/VTBMQjkjQcWJxWE5YGFBXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwRK8X%2FdJMcabQCyNh%2FVTBMQjkjQcWJxWE5YGFBXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;962&quot; height=&quot;16&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;16&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 열기(읽기/쓰기 권한)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1197&quot; data-origin-height=&quot;162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mLucV/dJMcaibaDiZ/Fy8PNZEN55VikrPKDCNdK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mLucV/dJMcaibaDiZ/Fy8PNZEN55VikrPKDCNdK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mLucV/dJMcaibaDiZ/Fy8PNZEN55VikrPKDCNdK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmLucV%2FdJMcaibaDiZ%2FFy8PNZEN55VikrPKDCNdK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1197&quot; height=&quot;162&quot; data-origin-width=&quot;1197&quot; data-origin-height=&quot;162&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 사용 중인 프로세스 강제 종료 (Restart Manager API)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1458&quot; data-origin-height=&quot;497&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bd7808/dJMcagqRKMC/OLj1Y5v3dfZji4ReSlCkM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bd7808/dJMcagqRKMC/OLj1Y5v3dfZji4ReSlCkM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bd7808/dJMcagqRKMC/OLj1Y5v3dfZji4ReSlCkM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd7808%2FdJMcagqRKMC%2FOLj1Y5v3dfZji4ReSlCkM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1458&quot; height=&quot;497&quot; data-origin-width=&quot;1458&quot; data-origin-height=&quot;497&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1042&quot; data-origin-height=&quot;205&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8zD1Q/dJMcaihUJ1q/9AISCzKikj7FhoX7ZSIVGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8zD1Q/dJMcaihUJ1q/9AISCzKikj7FhoX7ZSIVGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8zD1Q/dJMcaihUJ1q/9AISCzKikj7FhoX7ZSIVGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8zD1Q%2FdJMcaihUJ1q%2F9AISCzKikj7FhoX7ZSIVGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1042&quot; height=&quot;205&quot; data-origin-width=&quot;1042&quot; data-origin-height=&quot;205&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 소유권 획득&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1337&quot; data-origin-height=&quot;617&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxrBfa/dJMcajnxTzx/D63rvEyoValNtlv4M8TjbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxrBfa/dJMcajnxTzx/D63rvEyoValNtlv4M8TjbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxrBfa/dJMcajnxTzx/D63rvEyoValNtlv4M8TjbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxrBfa%2FdJMcajnxTzx%2FD63rvEyoValNtlv4M8TjbK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1337&quot; height=&quot;617&quot; data-origin-width=&quot;1337&quot; data-origin-height=&quot;617&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공격자 RSA 공개키 하드코딩&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1417&quot; data-origin-height=&quot;77&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UhkbU/dJMcajnxTAc/x45DdHXfKFmU7Vh7hulBk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UhkbU/dJMcajnxTAc/x45DdHXfKFmU7Vh7hulBk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UhkbU/dJMcajnxTAc/x45DdHXfKFmU7Vh7hulBk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUhkbU%2FdJMcajnxTAc%2Fx45DdHXfKFmU7Vh7hulBk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1417&quot; height=&quot;77&quot; data-origin-width=&quot;1417&quot; data-origin-height=&quot;77&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AES 키 생성 (32바이트)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1015&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OnZif/dJMcacPymLd/lvCKo0YAtffZitrqBPsIy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OnZif/dJMcacPymLd/lvCKo0YAtffZitrqBPsIy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OnZif/dJMcacPymLd/lvCKo0YAtffZitrqBPsIy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOnZif%2FdJMcacPymLd%2FlvCKo0YAtffZitrqBPsIy1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1015&quot; height=&quot;18&quot; data-origin-width=&quot;1015&quot; data-origin-height=&quot;18&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Curve25519 키 클램핑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;40&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmv2T2/dJMcadHDGVc/4oIXpD2m0P4ekN2XbtKCJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmv2T2/dJMcadHDGVc/4oIXpD2m0P4ekN2XbtKCJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmv2T2/dJMcadHDGVc/4oIXpD2m0P4ekN2XbtKCJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbmv2T2%2FdJMcadHDGVc%2F4oIXpD2m0P4ekN2XbtKCJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1152&quot; height=&quot;40&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;40&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Curve25519 연산&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1037&quot; data-origin-height=&quot;478&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cl2Jjo/dJMb99SOr64/bAd5urMDFSoK01QMPFnxC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cl2Jjo/dJMb99SOr64/bAd5urMDFSoK01QMPFnxC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cl2Jjo/dJMb99SOr64/bAd5urMDFSoK01QMPFnxC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcl2Jjo%2FdJMb99SOr64%2FbAd5urMDFSoK01QMPFnxC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1037&quot; height=&quot;478&quot; data-origin-width=&quot;1037&quot; data-origin-height=&quot;478&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SHA-512 해시&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1026&quot; data-origin-height=&quot;381&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEYMSF/dJMcadnlii7/ZnwqJMh7g6xkv2JyHFGfA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEYMSF/dJMcadnlii7/ZnwqJMh7g6xkv2JyHFGfA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEYMSF/dJMcadnlii7/ZnwqJMh7g6xkv2JyHFGfA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEYMSF%2FdJMcadnlii7%2FZnwqJMh7g6xkv2JyHFGfA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1026&quot; height=&quot;381&quot; data-origin-width=&quot;1026&quot; data-origin-height=&quot;381&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SHA-512 초기화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;458&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lxQDF/dJMcadgBJAK/iklbPd6KyYpJn2H8NKXxW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lxQDF/dJMcadgBJAK/iklbPd6KyYpJn2H8NKXxW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lxQDF/dJMcadgBJAK/iklbPd6KyYpJn2H8NKXxW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlxQDF%2FdJMcadgBJAK%2FiklbPd6KyYpJn2H8NKXxW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1022&quot; height=&quot;458&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;458&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SHA-512 업데이트&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;621&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ENS7N/dJMcafMh5nW/0h12Ud0pRG4LBVKXHnPkJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ENS7N/dJMcafMh5nW/0h12Ud0pRG4LBVKXHnPkJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ENS7N/dJMcafMh5nW/0h12Ud0pRG4LBVKXHnPkJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FENS7N%2FdJMcafMh5nW%2F0h12Ud0pRG4LBVKXHnPkJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1102&quot; height=&quot;621&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;621&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 확장자 추가 (.INC)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpXuXj/dJMcabpANBy/GvhS37z3KgUFpywwzGauB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpXuXj/dJMcabpANBy/GvhS37z3KgUFpywwzGauB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpXuXj/dJMcabpANBy/GvhS37z3KgUFpywwzGauB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpXuXj%2FdJMcabpANBy%2FGvhS37z3KgUFpywwzGauB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1012&quot; height=&quot;180&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;180&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AES 키 확장 (32바이트 -&amp;gt; 240바이트)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dHScEi/dJMb99ZBV9K/CYg0xgWP6JUpEaHR1Z9Cy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHScEi/dJMb99ZBV9K/CYg0xgWP6JUpEaHR1Z9Cy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHScEi/dJMb99ZBV9K/CYg0xgWP6JUpEaHR1Z9Cy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHScEi%2FdJMb99ZBV9K%2FCYg0xgWP6JUpEaHR1Z9Cy1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1087&quot; height=&quot;17&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1057&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOwzoq/dJMb99L1Rdc/35hDTR9Q8xsgTj8Y2rq3Ck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOwzoq/dJMb99L1Rdc/35hDTR9Q8xsgTj8Y2rq3Ck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOwzoq/dJMb99L1Rdc/35hDTR9Q8xsgTj8Y2rq3Ck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOwzoq%2FdJMb99L1Rdc%2F35hDTR9Q8xsgTj8Y2rq3Ck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1057&quot; height=&quot;17&quot; data-origin-width=&quot;1057&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;461&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BDXq5/dJMcaaEcSw8/cAMs2wY8LKYvCSK4skl7UK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BDXq5/dJMcaaEcSw8/cAMs2wY8LKYvCSK4skl7UK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BDXq5/dJMcaaEcSw8/cAMs2wY8LKYvCSK4skl7UK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBDXq5%2FdJMcaaEcSw8%2FcAMs2wY8LKYvCSK4skl7UK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1055&quot; height=&quot;461&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;461&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;비동기 파일 읽기 (I/O Completion Port 사용) &amp;rarr; 멀티 스레드&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1457&quot; data-origin-height=&quot;57&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qqli4/dJMcahcevog/kjn9CkMynZ7aj8ehQcKa00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qqli4/dJMcahcevog/kjn9CkMynZ7aj8ehQcKa00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qqli4/dJMcahcevog/kjn9CkMynZ7aj8ehQcKa00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqqli4%2FdJMcahcevog%2Fkjn9CkMynZ7aj8ehQcKa00%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1457&quot; height=&quot;57&quot; data-origin-width=&quot;1457&quot; data-origin-height=&quot;57&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;디렉터리 재귀 암호화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;22&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dJ9cRS/dJMcabb05s7/fvTne2L9a8klMyvZw4X9q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dJ9cRS/dJMcabb05s7/fvTne2L9a8klMyvZw4X9q0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dJ9cRS/dJMcabb05s7/fvTne2L9a8klMyvZw4X9q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdJ9cRS%2FdJMcabb05s7%2FfvTne2L9a8klMyvZw4X9q0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;22&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;22&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;랜섬 노트 생성 (README.txt)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WpmOD/dJMcajgMdRV/eWOWVkYc0ERIo5qkEb2yQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WpmOD/dJMcajgMdRV/eWOWVkYc0ERIo5qkEb2yQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WpmOD/dJMcajgMdRV/eWOWVkYc0ERIo5qkEb2yQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWpmOD%2FdJMcajgMdRV%2FeWOWVkYc0ERIo5qkEb2yQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;962&quot; height=&quot;20&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;598&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1QVey/dJMcajgMdSw/wyEoxu2diAh4RGheEfT7c0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1QVey/dJMcajgMdSw/wyEoxu2diAh4RGheEfT7c0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1QVey/dJMcajgMdSw/wyEoxu2diAh4RGheEfT7c0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1QVey%2FdJMcajgMdSw%2FwyEoxu2diAh4RGheEfT7c0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;957&quot; height=&quot;598&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;598&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;디렉터리 모든 파일/폴더 열거&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;61&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cl8SPO/dJMcadHDGVz/RbpVuEnxjvwGlWHyobxQA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cl8SPO/dJMcadHDGVz/RbpVuEnxjvwGlWHyobxQA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cl8SPO/dJMcadHDGVz/RbpVuEnxjvwGlWHyobxQA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcl8SPO%2FdJMcadHDGVz%2FRbpVuEnxjvwGlWHyobxQA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;61&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;61&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;955&quot; data-origin-height=&quot;100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ciYAss/dJMcafyKNS4/G8k8ksEdJ2hm1GgOdXboo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ciYAss/dJMcafyKNS4/G8k8ksEdJ2hm1GgOdXboo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ciYAss/dJMcafyKNS4/G8k8ksEdJ2hm1GgOdXboo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FciYAss%2FdJMcafyKNS4%2FG8k8ksEdJ2hm1GgOdXboo1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;955&quot; height=&quot;100&quot; data-origin-width=&quot;955&quot; data-origin-height=&quot;100&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;602&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzCFFf/dJMcadVaLpd/JEIubRtQbnnKlLiXyZqDj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzCFFf/dJMcadVaLpd/JEIubRtQbnnKlLiXyZqDj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzCFFf/dJMcadVaLpd/JEIubRtQbnnKlLiXyZqDj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzCFFf%2FdJMcadVaLpd%2FJEIubRtQbnnKlLiXyZqDj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1192&quot; height=&quot;602&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;602&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;숨겨진 드라이브 로드&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;997&quot; data-origin-height=&quot;23&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dmgda2/dJMcaiPHKEh/qw3L6p8rTpVaCufgvRkDx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dmgda2/dJMcaiPHKEh/qw3L6p8rTpVaCufgvRkDx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dmgda2/dJMcaiPHKEh/qw3L6p8rTpVaCufgvRkDx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdmgda2%2FdJMcaiPHKEh%2Fqw3L6p8rTpVaCufgvRkDx0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;997&quot; height=&quot;23&quot; data-origin-width=&quot;997&quot; data-origin-height=&quot;23&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;541&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CubAF/dJMb99ZBVz9/ikoRvjNTbA22fJx4huKGX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CubAF/dJMb99ZBVz9/ikoRvjNTbA22fJx4huKGX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CubAF/dJMb99ZBVz9/ikoRvjNTbA22fJx4huKGX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCubAF%2FdJMb99ZBVz9%2FikoRvjNTbA22fJx4huKGX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;957&quot; height=&quot;541&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;541&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;578&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IumUO/dJMcaaRKO0D/HYVKRKIU3lGZ8NUvg7tXo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IumUO/dJMcaaRKO0D/HYVKRKIU3lGZ8NUvg7tXo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IumUO/dJMcaaRKO0D/HYVKRKIU3lGZ8NUvg7tXo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIumUO%2FdJMcaaRKO0D%2FHYVKRKIU3lGZ8NUvg7tXo0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1012&quot; height=&quot;578&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;578&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;337&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dynnk1/dJMcaiWuA2B/CGnxvP2VlggHcBIqNK0Sf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dynnk1/dJMcaiWuA2B/CGnxvP2VlggHcBIqNK0Sf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dynnk1/dJMcaiWuA2B/CGnxvP2VlggHcBIqNK0Sf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdynnk1%2FdJMcaiWuA2B%2FCGnxvP2VlggHcBIqNK0Sf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;966&quot; height=&quot;337&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;337&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;5초 대기 (사용자 취소 가능성 차단)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;58&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kz6UO/dJMcacINaLM/waL2NghgMsqgynar8nNdWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kz6UO/dJMcacINaLM/waL2NghgMsqgynar8nNdWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kz6UO/dJMcacINaLM/waL2NghgMsqgynar8nNdWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fkz6UO%2FdJMcacINaLM%2FwaL2NghgMsqgynar8nNdWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;952&quot; height=&quot;58&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;58&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모든 드라이브 암호화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/diMgTR/dJMcaaqE1F2/ZOBFUcKttgdyLkvMVUdVTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/diMgTR/dJMcaaqE1F2/ZOBFUcKttgdyLkvMVUdVTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/diMgTR/dJMcaaqE1F2/ZOBFUcKttgdyLkvMVUdVTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdiMgTR%2FdJMcaaqE1F2%2FZOBFUcKttgdyLkvMVUdVTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;962&quot; height=&quot;17&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;992&quot; data-origin-height=&quot;557&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAwibU/dJMcagYHCxo/xAb1VpD1GxnX0ripSEG651/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAwibU/dJMcagYHCxo/xAb1VpD1GxnX0ripSEG651/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAwibU/dJMcagYHCxo/xAb1VpD1GxnX0ripSEG651/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAwibU%2FdJMcagYHCxo%2FxAb1VpD1GxnX0ripSEG651%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;992&quot; height=&quot;557&quot; data-origin-width=&quot;992&quot; data-origin-height=&quot;557&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;네트워크 공유 폴더 암호화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1061&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pO3yV/dJMcagYHCQb/8D2zKaSbmegfjKnlMjpd3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pO3yV/dJMcagYHCQb/8D2zKaSbmegfjKnlMjpd3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pO3yV/dJMcagYHCQb/8D2zKaSbmegfjKnlMjpd3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpO3yV%2FdJMcagYHCQb%2F8D2zKaSbmegfjKnlMjpd3K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1061&quot; height=&quot;17&quot; data-origin-width=&quot;1061&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;583&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3TVw7/dJMcaaEcRZX/MEREvJWKOhllIoavbFYptK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3TVw7/dJMcaaEcRZX/MEREvJWKOhllIoavbFYptK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3TVw7/dJMcaaEcRZX/MEREvJWKOhllIoavbFYptK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3TVw7%2FdJMcaaEcRZX%2FMEREvJWKOhllIoavbFYptK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;962&quot; height=&quot;583&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;583&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;968&quot; data-origin-height=&quot;200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dsmDhN/dJMcad1VTmy/pNPqeK7ezaII0de5aVjSvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dsmDhN/dJMcad1VTmy/pNPqeK7ezaII0de5aVjSvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dsmDhN/dJMcad1VTmy/pNPqeK7ezaII0de5aVjSvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdsmDhN%2FdJMcad1VTmy%2FpNPqeK7ezaII0de5aVjSvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;968&quot; height=&quot;200&quot; data-origin-width=&quot;968&quot; data-origin-height=&quot;200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;볼륨 섀도우 복사본(VSS) 삭제&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;22&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQOQ2I/dJMcabb05AV/nGuX2AlKOBlLU4v0zqbVOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQOQ2I/dJMcabb05AV/nGuX2AlKOBlLU4v0zqbVOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQOQ2I/dJMcabb05AV/nGuX2AlKOBlLU4v0zqbVOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQOQ2I%2FdJMcabb05AV%2FnGuX2AlKOBlLU4v0zqbVOK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;981&quot; height=&quot;22&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;22&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;455&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Dl0Ql/dJMcadOojhy/OkkmDLWb1E5P40XyxJwPNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Dl0Ql/dJMcadOojhy/OkkmDLWb1E5P40XyxJwPNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Dl0Ql/dJMcadOojhy/OkkmDLWb1E5P40XyxJwPNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDl0Ql%2FdJMcadOojhy%2FOkkmDLWb1E5P40XyxJwPNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1095&quot; height=&quot;455&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;455&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;바탕화면 랜섬노트로 변경&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;967&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JGSUd/dJMcaajTRuJ/BPa1JPweO3VzSAszgQSW9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JGSUd/dJMcaajTRuJ/BPa1JPweO3VzSAszgQSW9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JGSUd/dJMcaajTRuJ/BPa1JPweO3VzSAszgQSW9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJGSUd%2FdJMcaajTRuJ%2FBPa1JPweO3VzSAszgQSW9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;967&quot; height=&quot;20&quot; data-origin-width=&quot;967&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1110&quot; data-origin-height=&quot;513&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b00pkm/dJMcaajTRuR/V21K0PGVNmMgHQXkFhz9l1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b00pkm/dJMcaajTRuR/V21K0PGVNmMgHQXkFhz9l1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b00pkm/dJMcaajTRuR/V21K0PGVNmMgHQXkFhz9l1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb00pkm%2FdJMcaajTRuR%2FV21K0PGVNmMgHQXkFhz9l1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1110&quot; height=&quot;513&quot; data-origin-width=&quot;1110&quot; data-origin-height=&quot;513&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1173&quot; data-origin-height=&quot;580&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/V0Yu6/dJMcab39SNO/Hud3rkQt2W7kAqpVgmKG0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/V0Yu6/dJMcab39SNO/Hud3rkQt2W7kAqpVgmKG0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/V0Yu6/dJMcab39SNO/Hud3rkQt2W7kAqpVgmKG0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FV0Yu6%2FdJMcab39SNO%2FHud3rkQt2W7kAqpVgmKG0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1173&quot; height=&quot;580&quot; data-origin-width=&quot;1173&quot; data-origin-height=&quot;580&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연결된 프린터 랜섬노트 출력 (물리적)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;980&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blsdhT/dJMcadOojjJ/fAT0q5CQv6aVQOBIQaMF7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blsdhT/dJMcadOojjJ/fAT0q5CQv6aVQOBIQaMF7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blsdhT/dJMcadOojjJ/fAT0q5CQv6aVQOBIQaMF7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblsdhT%2FdJMcadOojjJ%2FfAT0q5CQv6aVQOBIQaMF7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;980&quot; height=&quot;21&quot; data-origin-width=&quot;980&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1046&quot; data-origin-height=&quot;497&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/edMD5O/dJMcaiWuA4A/x9WVE7YqqPOOJYt6Y4Kfu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/edMD5O/dJMcaiWuA4A/x9WVE7YqqPOOJYt6Y4Kfu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/edMD5O/dJMcaiWuA4A/x9WVE7YqqPOOJYt6Y4Kfu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FedMD5O%2FdJMcaiWuA4A%2Fx9WVE7YqqPOOJYt6Y4Kfu0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1046&quot; height=&quot;497&quot; data-origin-width=&quot;1046&quot; data-origin-height=&quot;497&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;967&quot; data-origin-height=&quot;538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDu9Rs/dJMcabC6Xsc/l5W7OVKTq9EqdZTVZ0hKm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDu9Rs/dJMcabC6Xsc/l5W7OVKTq9EqdZTVZ0hKm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDu9Rs/dJMcabC6Xsc/l5W7OVKTq9EqdZTVZ0hKm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDu9Rs%2FdJMcabC6Xsc%2Fl5W7OVKTq9EqdZTVZ0hKm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;967&quot; height=&quot;538&quot; data-origin-width=&quot;967&quot; data-origin-height=&quot;538&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5. 복호화 기술 분석 (Decryption Strategy)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.1 복호화 가능성 분석&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;5.1.1 하이브리드 암호화 복호화 불가능 원리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770552765830&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;복호화를 위해 필요한 키 체인:

1. 암호화된 파일 &amp;rarr; 복호화
   필요: AES 키 (32바이트)
   
2. 암호화된 AES 키 &amp;rarr; 복호화
   필요: Cpriv.key (피해자 개인키)
   
3. 암호화된 Cpriv.key &amp;rarr; 복호화
   필요: Spriv.key (공격자 개인키)

문제점:
- Spriv.key는 공격자 C&amp;amp;C 서버에만 존재
- Cpriv.key는 Spub.key로 암호화되어 있어 Spriv.key 없이 복호화 불가능
- AES 키는 Cpub.key로 암호화되어 있어 Cpriv.key 없이 복호화 불가능&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;5.1.2 복호화 가능 시나리오&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;시나리오 1: API 후킹으로 AES 키 캡처&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770552783032&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CryptGenRandom API 호출
         &amp;darr;
   평문 AES 키 생성 (32B)
         &amp;darr;
  ★ API 후킹 지점 ★  &amp;larr; 키 캡처!
         &amp;darr;
  RSA로 AES 키 암호화
         &amp;darr;
  파일 암호화 수행&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;시나리오 2: 메모리 덤프에서 키 추출&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770552795893&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;암호화 진행 중 메모리 덤프
         &amp;darr;
평문 AES 키 패턴 검색
         &amp;darr;
키 후보 추출 및 검증&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;시나리오 3: 공격자 개인키 획득&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770552811005&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Spriv.key 획득
         &amp;darr;
Cpriv.key 복호화
         &amp;darr;
각 파일의 AES 키 복호화
         &amp;darr;
파일 복호화&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.2 CryptGenRandom 키 복구 메커니즘&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;취약점 구조&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770552835069&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[암호화 프로세스]
CreateFile(&quot;target.docx&quot;)
         &amp;darr;
CryptGenRandom(hProv, 32, pbKeyBlob)  &amp;larr; 평문 AES 키 생성
         &amp;darr;
  ★ API 후킹 지점 ★
  - 32바이트 평문 AES 키 캡처
  - 파일명과 매핑하여 저장
         &amp;darr;
CryptImportKey(..., pbKeyBlob, 32, ...)  &amp;larr; 키 객체 생성
         &amp;darr;
CryptEncrypt(...)  &amp;larr; 파일 암호화
         &amp;darr;
RSA_Encrypt(pbKeyBlob, Cpub.key)  &amp;larr; AES 키 암호화
         &amp;darr;
WriteFile(hFile, encryptedKey, ...)  &amp;larr; 암호화된 키 저장
         &amp;darr;
ZeroMemory(pbKeyBlob, 32)  &amp;larr; 평문 키 메모리 소거&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.3 자동화 복호화 스크립트 개발&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;5.3.1 핵심 복호화 로직&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 암호화된 파일 메타데이터 추출 &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770552879661&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import struct

def extract_metadata(encrypted_file_path):
    &quot;&quot;&quot;파일 Footer에서 메타데이터 추출&quot;&quot;&quot;
    with open(encrypted_file_path, 'rb') as f:
        # 파일 끝으로 이동
        f.seek(-288, 2)  # 256 + 16 + 8 + 4 + 4 = 288 바이트
        
        # 메타데이터 읽기
        encrypted_aes_key = f.read(256)  # RSA-2048로 암호화된 AES 키
        iv = f.read(16)                  # IV
        original_size = struct.unpack('&amp;lt;Q', f.read(8))[0]  # 원본 크기
        mode_flag = struct.unpack('&amp;lt;I', f.read(4))[0]      # 암호화 모드
        magic = f.read(4)                # 매직 바이트
        
        if magic != b'INC\x00':
            raise ValueError(&quot;Invalid INC ransomware file&quot;)
        
        return {
            &quot;encrypted_aes_key&quot;: encrypted_aes_key,
            &quot;iv&quot;: iv,
            &quot;original_size&quot;: original_size,
            &quot;mode_flag&quot;: mode_flag
        }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. AES-256 CBC 복호화&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770552897868&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad

def decrypt_file_aes(encrypted_file_path, aes_key_hex, output_path):
    &quot;&quot;&quot;AES-256 CBC 모드로 파일 복호화&quot;&quot;&quot;
    # 메타데이터 추출
    metadata = extract_metadata(encrypted_file_path)
    iv = metadata[&quot;iv&quot;]
    original_size = metadata[&quot;original_size&quot;]
    mode_flag = metadata[&quot;mode_flag&quot;]
    
    # AES 키 변환
    aes_key = bytes.fromhex(aes_key_hex)
    
    # 암호화된 데이터 읽기
    with open(encrypted_file_path, 'rb') as f:
        encrypted_data = f.read()
    
    # 메타데이터 제거 (Footer 288바이트)
    encrypted_data = encrypted_data[:-288]
    
    # AES 복호화
    cipher = AES.new(aes_key, AES.MODE_CBC, iv)
    
    if mode_flag == 1:  # Fast mode - 처음 1MB만 암호화됨
        decrypted_chunk = cipher.decrypt(encrypted_data[:1_000_000])
        decrypted_data = decrypted_chunk + encrypted_data[1_000_000:]
    elif mode_flag == 2:  # Medium mode - 1MB씩 선택적 암호화
        decrypted_data = bytearray()
        offset = 0
        while offset &amp;lt; len(encrypted_data):
            if (offset // 1_000_000) % 2 == 0:  # 짝수 청크는 암호화됨
                chunk_size = min(1_000_000, len(encrypted_data) - offset)
                decrypted_chunk = cipher.decrypt(encrypted_data[offset:offset+chunk_size])
                decrypted_data.extend(decrypted_chunk)
                # 다음 청크를 위해 cipher 재초기화
                cipher = AES.new(aes_key, AES.MODE_CBC, encrypted_data[offset+chunk_size-16:offset+chunk_size])
            else:  # 홀수 청크는 평문
                decrypted_data.extend(encrypted_data[offset:offset+1_000_000])
            offset += 1_000_000
    else:  # Full mode - 전체 암호화
        decrypted_data = cipher.decrypt(encrypted_data)
        # PKCS7 패딩 제거
        try:
            decrypted_data = unpad(decrypted_data, AES.block_size)
        except:
            pass  # 패딩이 없는 경우
    
    # 원본 크기로 자르기
    decrypted_data = decrypted_data[:original_size]
    
    return True&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 매직 바이트 검증 &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770552911544&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def verify_decryption(output_path, expected_ext):
    &quot;&quot;&quot;복호화 결과의 매직 바이트 검증&quot;&quot;&quot;
    magic_bytes = {
        '.jpg': b'\xFF\xD8\xFF',
        '.png': b'\x89PNG\r\n\x1a\n',
        '.pdf': b'%PDF',
        '.docx': b'PK\x03\x04',
        '.xlsx': b'PK\x03\x04',
        '.zip': b'PK\x03\x04',
        '.exe': b'MZ',
        '.dll': b'MZ'
    }
    
    ext = expected_ext.lower()
    if ext not in magic_bytes:
        return None  # 검증할 수 없는 파일 형식
    
    with open(output_path, 'rb') as f:
        header = f.read(len(magic_bytes[ext]))
    
    return header == magic_bytes[ext]&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.4 무결성 검증&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;5.4.1 매직 바이트 테이블&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;파일 유형&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;매직 넘버 (Hex)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JPG/JPEG&lt;/td&gt;
&lt;td&gt;FF D8 FF E0/E1/DB&lt;/td&gt;
&lt;td&gt;JPEG 이미지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PNG&lt;/td&gt;
&lt;td&gt;89 50 4E 47 0D 0A 1A 0A&lt;/td&gt;
&lt;td&gt;PNG 이미지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PDF&lt;/td&gt;
&lt;td&gt;25 50 44 46&lt;/td&gt;
&lt;td&gt;PDF 문서&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DOCX&lt;/td&gt;
&lt;td&gt;50 4B 03 04&lt;/td&gt;
&lt;td&gt;Office Open XML (ZIP)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XLSX&lt;/td&gt;
&lt;td&gt;50 4B 03 04&lt;/td&gt;
&lt;td&gt;Office Open XML (ZIP)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ZIP&lt;/td&gt;
&lt;td&gt;50 4B 03 04&lt;/td&gt;
&lt;td&gt;ZIP 압축 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EXE/DLL&lt;/td&gt;
&lt;td&gt;4D 5A&lt;/td&gt;
&lt;td&gt;Windows 실행 파일 (MZ)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MP3&lt;/td&gt;
&lt;td&gt;FF FB / ID3&lt;/td&gt;
&lt;td&gt;MP3 오디오&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MP4&lt;/td&gt;
&lt;td&gt;00 00 00 18/20 66 74 79 70&lt;/td&gt;
&lt;td&gt;MPEG-4 비디오&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6. 요약 및 결론 (Conclusion)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.1 최종 평가&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;INC 랜섬웨어는 &lt;b&gt;AES-256 대칭 암호화와 RSA-2048 비대칭 암호화를 결합한 하이브리드 방식&lt;/b&gt;을 채택하여, 공격자 개인키 없이는 복호화가 불가능한 구조를 가지고 있습니다. **부분 암호화(Intermittent Encryption)**와 &lt;b&gt;멀티스레딩(CPU 코어 &amp;times; 4)&lt;/b&gt; 기법을 통해 암호화 속도를 극대화하며, VSS 삭제 및 프로세스 종료를 통해 복구를 방해합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 &lt;b&gt;CryptGenRandom API 호출 시점에 평문 AES 키가 메모리에 존재&lt;/b&gt;하는 구조적 취약점으로 인해, API 후킹을 통한 실시간 키 캡처가 가능하며, 이를 활용한 완벽한 복호화가 실증되었습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1770552969985&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[취약점 요약]
CryptGenRandom(32바이트)
         &amp;darr;
   평문 AES 키 생성
         &amp;darr;
  ★ API 후킹 지점 ★
         &amp;darr;
RSA-2048 키 암호화
         &amp;darr;
AES-256 CBC 파일 암호화
         &amp;darr;
  파일 암호화 완료&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.2 대응 가이드&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;6.2.1 예방적 조치&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. API 모니터링 강화&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CryptGenRandom 호출 패턴 실시간 탐지&lt;/li&gt;
&lt;li&gt;의심스러운 대량 난수 생성 차단 (32바이트 &amp;times; 수백 회)&lt;/li&gt;
&lt;li&gt;멀티스레드 암호화 패턴 탐지 (CPU 코어 &amp;times; 4 스레드)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 행위 기반 탐지&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대량 파일 접근 패턴 탐지 (수천 개 파일 동시 접근)&lt;/li&gt;
&lt;li&gt;.INC 확장자 추가 행위 차단&lt;/li&gt;
&lt;li&gt;VSS 삭제 시도 탐지 및 차단&lt;/li&gt;
&lt;li&gt;프린터 자동 출력 시도 차단&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 네트워크 방어&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CVE-2023-3519 (Citrix NetScaler) 패치 적용&lt;/li&gt;
&lt;li&gt;RDP 접근 제한 및 MFA 적용&lt;/li&gt;
&lt;li&gt;의심스러운 PowerShell/WMI 실행 차단&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 파일 시스템 보호&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실시간 백업 시스템 구축 (오프라인 백업 포함)&lt;/li&gt;
&lt;li&gt;VSS 보호 솔루션 적용&lt;/li&gt;
&lt;li&gt;중요 파일 읽기 전용 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;6.2.2 사후 대응&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 초동 조치&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;감염 발견 즉시 시스템 격리 (네트워크 차단)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;메모리 덤프 수행&lt;/b&gt; (시스템 종료 금지!)&lt;/li&gt;
&lt;li&gt;프로세스 메모리에서 평문 AES 키 추출 시도&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 키 복구 전략&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;API 후킹 도구로 CryptGenRandom 로그 확보&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Detours 라이브러리 활용&lt;/li&gt;
&lt;li&gt;후킹 DLL 인젝션&lt;/li&gt;
&lt;li&gt;JSON 로그 파일 수집&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;메모리 포렌식으로 AES 키 패턴 추출&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Volatility Framework 활용&lt;/li&gt;
&lt;li&gt;32바이트 패턴 검색 (높은 엔트로피)&lt;/li&gt;
&lt;li&gt;파일명과 키 매핑&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;API 후킹 로그에서 키 후보 도출&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;타임스탬프 기반 파일-키 매핑&lt;/li&gt;
&lt;li&gt;키 검증 (매직 바이트 확인)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 복호화 수행&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;추출한 AES 키로 파일 복호화&lt;/li&gt;
&lt;li&gt;매직 바이트 검증 및 무결성 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 시스템 복구&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;복호화 성공 후 시스템 재구축&lt;/li&gt;
&lt;li&gt;초기 침투 경로 분석 및 패치&lt;/li&gt;
&lt;li&gt;보안 솔루션 강화&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.3 기술적 특징 요약&lt;/b&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;세부 내용&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;암호화 알고리즘&lt;/td&gt;
&lt;td&gt;AES-256 CBC (대칭) + RSA-2048 (비대칭)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;키 관리&lt;/td&gt;
&lt;td&gt;파일별 독립 32바이트 AES 키 (CryptGenRandom)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;하이브리드 구조&lt;/td&gt;
&lt;td&gt;AES로 파일 암호화 &amp;rarr; RSA로 AES 키 암호화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;부분 암호화&lt;/td&gt;
&lt;td&gt;Fast/Medium 모드 (1,000,000 바이트 단위)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;멀티스레딩&lt;/td&gt;
&lt;td&gt;CPU 코어 수 &amp;times; 4 스레드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;확장자&lt;/td&gt;
&lt;td&gt;.INC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;랜섬 노트&lt;/td&gt;
&lt;td&gt;INC-README.TXT, INC-README.HTML&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;초기 침투&lt;/td&gt;
&lt;td&gt;CVE-2023-3519 (Citrix NetScaler), Phishing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;복호화 가능성&lt;/td&gt;
&lt;td&gt;API 후킹으로 AES 키 확보 시 100% 복구 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;회피 기법&lt;/td&gt;
&lt;td&gt;VSS 삭제, 프로세스 종료, 배경화면 변경, 프린터 출력&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.4 결론&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;INC 랜섬웨어는 &lt;b&gt;AES-256과 RSA-2048을 결합한 강력한 하이브리드 암호화 구조&lt;/b&gt;를 가지고 있으며, &lt;b&gt;부분 암호화와 멀티스레딩을 통해 암호화 속도를 극대화&lt;/b&gt;하는 정교한 랜섬웨어입니다. 2023년 7월 등장 이후 &lt;b&gt;300명 이상의 피해자&lt;/b&gt;를 발생시키며 지속적으로 활동하고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 &lt;b&gt;CryptGenRandom API를 직접 호출하는 설계상 취약점&lt;/b&gt;으로 인해, &lt;b&gt;API 후킹을 통한 실시간 AES 키 캡처가 가능&lt;/b&gt;하며, 이를 활용한 복호화가 실증되었습니다. 본 분석에서 개발한 자동화 복호화 도구는 INC 랜섬웨어 감염 피해 복구에 직접 활용될 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;향후 대응을 위해서는 &lt;b&gt;암호화 API 실시간 모니터링 체계 구축&lt;/b&gt;, &lt;b&gt;메모리 포렌식 역량 강화&lt;/b&gt;, &lt;b&gt;CVE-2023-3519 패치 적용&lt;/b&gt;, &lt;b&gt;다층 백업 전략 수립&lt;/b&gt;이 필수적입니다. 특히 &lt;b&gt;감염 초기에 메모리 덤프를 확보&lt;/b&gt;하고, &lt;b&gt;API 후킹 도구를 사전에 배포&lt;/b&gt;하는 것이 복호화 성공률을 극대화할 수 있습니다.&lt;/p&gt;</description>
      <category>랜섬웨어 분석 보고서</category>
      <author>geonwoo9643</author>
      <guid isPermaLink="true">https://mzcompany.tistory.com/15</guid>
      <comments>https://mzcompany.tistory.com/15#entry15comment</comments>
      <pubDate>Sun, 8 Feb 2026 21:27:19 +0900</pubDate>
    </item>
    <item>
      <title>Cloak 랜섬웨어 분석 보고서</title>
      <link>https://mzcompany.tistory.com/14</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 개요 (Overview)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.1 분석 배경&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Cloak&lt;/b&gt; 랜섬웨어는 Mammona 랜섬웨어의 변종으로 추정되는 악성코드로, ECDH(Curve25519) 키 교환과 HC-128 스트림 암호화를 결합한 하이브리드 암호화 방식을 사용합니다. 프로세스 교체(Process Hollowing) 및 자가 삭제 메커니즘을 통해 분석을 회피하며, 안티디버깅 로직을 내장하고 있습니다. 본 보고서는 Cloak의 암호학적 구조를 정밀 분석하고, API 후킹을 통한 실시간 키 추출 및 복호화 전략을 제시합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.2 핵심 요약&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;암호화 메커니즘&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ECDH(Curve25519) 키 교환 프로토콜을 통한 파일별 공유 비밀 생성&lt;/li&gt;
&lt;li&gt;HC-128 스트림 암호를 사용한 고속 파일 암호화&lt;/li&gt;
&lt;li&gt;SHA-512 기반 KDF(Key Derivation Function)로 HC-128 Key/IV 도출&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;회피 기법&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로세스 교체 및 자가 삭제 메커니즘&lt;/li&gt;
&lt;li&gt;안티디버깅 로직 내장&lt;/li&gt;
&lt;li&gt;휴지통 비우기, VSS 삭제, 방화벽 무력화&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;복호화 가능성&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CryptGenRandom API 호출 시점의 파일별 개인키를 API 후킹으로 실시간 캡처 시 완벽한 복호화 가능&lt;/li&gt;
&lt;li&gt;공격자 개인키 없이는 복호화 불가능&lt;/li&gt;
&lt;li&gt;본 분석에서 개발한 자동화 복호화 스크립트로 실증 검증 완료&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 식별 정보 (Identification)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Malware Family&lt;/b&gt;: Cloak (Mammona 변종)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Filetype&lt;/b&gt;: PE32 (Windows Executable)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Hash (SHA256)&lt;/b&gt;: d6af700fb86d3a3a832ba49273453b9c35c89978e4855ce9033b9770d938881c&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Extension&lt;/b&gt;: .crYpt&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Target&lt;/b&gt;: Windows 기반 시스템&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 분석 환경 및 도구 (Tools)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;도구명 (Tool)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;용도 (Purpose)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;정적 분석&lt;/td&gt;
&lt;td&gt;IDA Pro&lt;/td&gt;
&lt;td&gt;ECDH/HC-128 구현 루틴 및 암호화 로직 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;동적 분석&lt;/td&gt;
&lt;td&gt;CryptGenRandom API Hooking&lt;/td&gt;
&lt;td&gt;실시간 개인키 추출&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;행위 분석&lt;/td&gt;
&lt;td&gt;Process Monitor&lt;/td&gt;
&lt;td&gt;파일 I/O 및 암호화 행위 추적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;암호 분석&lt;/td&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;td&gt;ECDH 연산 및 HC-128 복호화 스크립트 개발&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 암호화 기술 분석 (Technical Analysis)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 4.1 전체 암호화 워크플로우&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1770361611609&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[실행 단계]
1. WinMain 초기화
   - 안티디버깅 로직 실행
   - 프로세스 교체 (Process Hollowing)
   - 자가 삭제 메커니즘 활성화
   &amp;darr;
2. 시스템 무력화
   - 휴지통 비우기
   - VSS(Volume Shadow Copy) 삭제
   - 방화벽 비활성화
   - CryptAcquireContext로 암호화 공급자 획득
   &amp;darr;
3. 암호화 스레드 생성
   - reateThread 호출
   - StartAddress로 암호화 워커 스레드 실행
   &amp;darr;
4. 파일별 암호화 수행
   - 파일 탐색 및 필터링
   - 암호화 함수 호출
   - 파일명 변경 (원본.확장자 &amp;rarr; 원본.확장자.crYpt)&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.2 키 생성 및 관리 (Key Generation)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.2.1 ECDH 키 교환 프로토콜&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Curve25519 기반 키 교환&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770361641587&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;정의:
- G = BasePoint (Curve25519 &amp;rarr; 9)
- a = 파일별 피해자 개인키 (CryptGenRandom으로 생성, 32바이트)
- A = 파일별 피해자 공개키
- b = 공격자 개인키 (미공개)
- B = 공격자 공개키 (하드코딩)
- s = 공유 비밀 (암호화 키 도출용)

키 교환 과정:
1. A = Curve25519(a, G)  // 피해자 공개키 생성
2. s = Curve25519(a, B)  // 공유 비밀 생성
3. A를 파일 메타데이터에 저장 (복호화 시 사용)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;공격자 공개키 (하드코딩) &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770361667726&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ATTACKER_PUBKEY_CRYPT = bytes.fromhex(
    &quot;3B4C31C6857B5C176EE766CDC3CE7DF291E76373926E9801B1D73F61F5D77B07&quot;
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.2.2 SHA-512 KDF (Key Derivation Function)&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770361693200&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/ ECDH 공유 비밀 생성
shared_secret = Curve25519(victim_privkey, attacker_pubkey);

// SHA-512 해싱
master_key = SHA512(shared_secret);  // 64바이트

// 키 분할
hc128_key = master_key[0:32];   // HC-128 Key (32바이트)
hc128_iv  = master_key[32:64];  // HC-128 IV (32바이트)&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.3 HC-128 스트림 암호화 알고리즘&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt; 4.3.1 HC-128 초기화&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;State 구조&lt;/span&gt; &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770361723359&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;HC-128 State (2560비트):
- P[512]: 32비트 워드 배열 (2048비트)
- Q[512]: 32비트 워드 배열 (2048비트)
- Key: 32바이트 (256비트)
- IV: 32바이트 (256비트)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;초기화 과정&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770361736044&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 1. Key/IV로 State 초기화
init_state(state, key_words, 256, 256);

// 2. IV 적용
apply_iv(state, iv_words);

// 3. 키스트림 생성 준비
prepare_keystream(state);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.3.2 키스트림 생성 및 XOR 암호화&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770361750065&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 키스트림 생성 및 XOR 연산
ReadFile(hFile, lpBuffer, FileSize.LowPart, &amp;amp;NumberOfBytesRead, 0);
hc128_xor_encrypt(state, lpBuffer, lpBuffer, NumberOfBytesRead);
WriteFile(hFile, lpBuffer, NumberOfBytesRead, &amp;amp;NumberOfBytesWritten, 0);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;암호화 수식 &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770361764421&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Ciphertext[i] = Plaintext[i] &amp;oplus; HC128_Keystream[i]&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 4.4 파일 처리 아키텍처&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1770361785208&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[파일 암호화 프로세스]
1. 파일 열기 (CreateFile)
   &amp;darr;
2. CryptGenRandom 호출
   - 32바이트 개인키 생성 (a)
   ★ API 후킹 지점 ★
   &amp;darr;
3. ECDH 키 교환
   - A = Curve25519(a, G)
   - s = Curve25519(a, B)
   &amp;darr;
4. KDF 수행
   - master = SHA512(s)
   - key = master[0:32]
   - iv = master[32:64]
   &amp;darr;
5. HC-128 초기화
   - State 초기화 (key, iv)
   &amp;darr;
6. 파일 암호화
   - HC-128 키스트림 생성
   - XOR 연산
   - 암호화 데이터 쓰기
   &amp;darr;
7. 파일명 변경
   원본.확장자 &amp;rarr; 원본.확장자.crYpt&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 4.5 정적 분석&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; WinMain&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CSP(Cryptographic Service Provider) 컨텍스트 획득&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1023&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lF6ON/dJMcaaEbQro/GDSV9SFjmmqYNjbMOJ2t90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lF6ON/dJMcaaEbQro/GDSV9SFjmmqYNjbMOJ2t90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lF6ON/dJMcaaEbQro/GDSV9SFjmmqYNjbMOJ2t90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlF6ON%2FdJMcaaEbQro%2FGDSV9SFjmmqYNjbMOJ2t90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1023&quot; height=&quot;202&quot; data-origin-width=&quot;1023&quot; data-origin-height=&quot;202&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Mutex 생성 (중복 실행 방지)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1295&quot; data-origin-height=&quot;55&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blYwj7/dJMb996lwrR/l6KSbIsajePkqvl7humK1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blYwj7/dJMb996lwrR/l6KSbIsajePkqvl7humK1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blYwj7/dJMb996lwrR/l6KSbIsajePkqvl7humK1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblYwj7%2FdJMb996lwrR%2Fl6KSbIsajePkqvl7humK1K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1295&quot; height=&quot;55&quot; data-origin-width=&quot;1295&quot; data-origin-height=&quot;55&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 드라이브 별 파일 암호화 수행 (시스템 내 논리 드라이브)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1135&quot; data-origin-height=&quot;401&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QA0dL/dJMcac9Mn3Z/xgQcZ32gcQHdWaIUGfXK01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QA0dL/dJMcac9Mn3Z/xgQcZ32gcQHdWaIUGfXK01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QA0dL/dJMcac9Mn3Z/xgQcZ32gcQHdWaIUGfXK01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQA0dL%2FdJMcac9Mn3Z%2FxgQcZ32gcQHdWaIUGfXK01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1135&quot; height=&quot;401&quot; data-origin-width=&quot;1135&quot; data-origin-height=&quot;401&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;드라이브 암호화 시작&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1350&quot; data-origin-height=&quot;562&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Cw5Kv/dJMcabJSwHv/QASXbwBhhlNPUw7EjxkwJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Cw5Kv/dJMcabJSwHv/QASXbwBhhlNPUw7EjxkwJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Cw5Kv/dJMcabJSwHv/QASXbwBhhlNPUw7EjxkwJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCw5Kv%2FdJMcabJSwHv%2FQASXbwBhhlNPUw7EjxkwJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1350&quot; height=&quot;562&quot; data-origin-width=&quot;1350&quot; data-origin-height=&quot;562&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;디렉터리 재귀 탐색&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1315&quot; data-origin-height=&quot;378&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c4ru2A/dJMcaaKWw7O/FH4Gju8s4QRYTlO6ZZ7xd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4ru2A/dJMcaaKWw7O/FH4Gju8s4QRYTlO6ZZ7xd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4ru2A/dJMcaaKWw7O/FH4Gju8s4QRYTlO6ZZ7xd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4ru2A%2FdJMcaaKWw7O%2FFH4Gju8s4QRYTlO6ZZ7xd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1315&quot; height=&quot;378&quot; data-origin-width=&quot;1315&quot; data-origin-height=&quot;378&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1347&quot; data-origin-height=&quot;541&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vMNbf/dJMcajnw3LZ/dWWqOfoJwo8RUs8TOxHVqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vMNbf/dJMcajnw3LZ/dWWqOfoJwo8RUs8TOxHVqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vMNbf/dJMcajnw3LZ/dWWqOfoJwo8RUs8TOxHVqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvMNbf%2FdJMcajnw3LZ%2FdWWqOfoJwo8RUs8TOxHVqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1347&quot; height=&quot;541&quot; data-origin-width=&quot;1347&quot; data-origin-height=&quot;541&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일/폴더 필터링 및 제외&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1176&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EdKF4/dJMcadAP0gw/1dMGKViokMgYp7IfYcOkL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EdKF4/dJMcadAP0gw/1dMGKViokMgYp7IfYcOkL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EdKF4/dJMcadAP0gw/1dMGKViokMgYp7IfYcOkL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEdKF4%2FdJMcadAP0gw%2F1dMGKViokMgYp7IfYcOkL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1176&quot; height=&quot;300&quot; data-origin-width=&quot;1176&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 큐 관리 함수&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1295&quot; data-origin-height=&quot;341&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNguen/dJMcafFuk99/I1VRcih6CIESNR3CnSVNU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNguen/dJMcafFuk99/I1VRcih6CIESNR3CnSVNU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNguen/dJMcafFuk99/I1VRcih6CIESNR3CnSVNU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNguen%2FdJMcafFuk99%2FI1VRcih6CIESNR3CnSVNU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1295&quot; height=&quot;341&quot; data-origin-width=&quot;1295&quot; data-origin-height=&quot;341&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;암호화 스레드 생성 (CPU 코어 수)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1515&quot; data-origin-height=&quot;537&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/U5mEC/dJMcagdld5n/bMA063gx2Gf80El0uawHJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/U5mEC/dJMcagdld5n/bMA063gx2Gf80El0uawHJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/U5mEC/dJMcagdld5n/bMA063gx2Gf80El0uawHJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU5mEC%2FdJMcagdld5n%2FbMA063gx2Gf80El0uawHJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1515&quot; height=&quot;537&quot; data-origin-width=&quot;1515&quot; data-origin-height=&quot;537&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 암호화 워커 스레드 &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1045&quot; data-origin-height=&quot;593&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCFRSF/dJMcadnkp3n/MtHzuJQAnP83KFwSw5XeSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCFRSF/dJMcadnkp3n/MtHzuJQAnP83KFwSw5XeSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCFRSF/dJMcadnkp3n/MtHzuJQAnP83KFwSw5XeSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCFRSF%2FdJMcadnkp3n%2FMtHzuJQAnP83KFwSw5XeSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1045&quot; height=&quot;593&quot; data-origin-width=&quot;1045&quot; data-origin-height=&quot;593&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 암호화 함수 &lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 속성 변경&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;58&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dd9lfm/dJMcag5tIHy/TJuZryEoTtzFGi0oslmIYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dd9lfm/dJMcag5tIHy/TJuZryEoTtzFGi0oslmIYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dd9lfm/dJMcag5tIHy/TJuZryEoTtzFGi0oslmIYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdd9lfm%2FdJMcag5tIHy%2FTJuZryEoTtzFGi0oslmIYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1020&quot; height=&quot;58&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;58&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 확장자 변경&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;41&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQrEOA/dJMcacor95S/2UnimyaoL9avK0w5DnoHq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQrEOA/dJMcacor95S/2UnimyaoL9avK0w5DnoHq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQrEOA/dJMcacor95S/2UnimyaoL9avK0w5DnoHq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQrEOA%2FdJMcacor95S%2F2UnimyaoL9avK0w5DnoHq0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1017&quot; height=&quot;41&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;41&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 열기 (읽기/쓰기 권한)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1057&quot; data-origin-height=&quot;221&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IiHDv/dJMcagqQY7L/STf1vIxntmKnLFhGjmdhH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IiHDv/dJMcagqQY7L/STf1vIxntmKnLFhGjmdhH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IiHDv/dJMcagqQY7L/STf1vIxntmKnLFhGjmdhH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIiHDv%2FdJMcagqQY7L%2FSTf1vIxntmKnLFhGjmdhH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1057&quot; height=&quot;221&quot; data-origin-width=&quot;1057&quot; data-origin-height=&quot;221&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공개키 로드&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;537&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/utEFG/dJMb99ZBcZw/H0taU3n0mXlQpkFPiuZVSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/utEFG/dJMb99ZBcZw/H0taU3n0mXlQpkFPiuZVSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/utEFG/dJMb99ZBcZw/H0taU3n0mXlQpkFPiuZVSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FutEFG%2FdJMb99ZBcZw%2FH0taU3n0mXlQpkFPiuZVSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1408&quot; height=&quot;537&quot; data-origin-width=&quot;1408&quot; data-origin-height=&quot;537&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;개인 키 생성 (32바이트)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1276&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEsDlb/dJMcaaYtkNh/Tu5SuE3Q7XM6odHcAdYqik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEsDlb/dJMcaaYtkNh/Tu5SuE3Q7XM6odHcAdYqik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEsDlb/dJMcaaYtkNh/Tu5SuE3Q7XM6odHcAdYqik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEsDlb%2FdJMcaaYtkNh%2FTu5SuE3Q7XM6odHcAdYqik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1276&quot; height=&quot;20&quot; data-origin-width=&quot;1276&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Curve25519 스칼라 곱셈 (공개 키 생성)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1262&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQUrHd/dJMcadU9Ygz/HjkV1Ns4aY4mg1IWeqght1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQUrHd/dJMcadU9Ygz/HjkV1Ns4aY4mg1IWeqght1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQUrHd/dJMcadU9Ygz/HjkV1Ns4aY4mg1IWeqght1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQUrHd%2FdJMcadU9Ygz%2FHjkV1Ns4aY4mg1IWeqght1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1262&quot; height=&quot;17&quot; data-origin-width=&quot;1262&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Curve25519 ECDH (공유 비밀 생성)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1167&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r7EaA/dJMcaaqEdKY/mCGjMHUgD3w8kKe0tI7qGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r7EaA/dJMcaaqEdKY/mCGjMHUgD3w8kKe0tI7qGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r7EaA/dJMcaaqEdKY/mCGjMHUgD3w8kKe0tI7qGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr7EaA%2FdJMcaaqEdKY%2FmCGjMHUgD3w8kKe0tI7qGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1167&quot; height=&quot;21&quot; data-origin-width=&quot;1167&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SHA-512 KDF (64바이트 마스터 키 생성)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1315&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkX0eu/dJMcaaKWxn6/eN8qrid6WOnrnH5LnQ1Md0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkX0eu/dJMcaaKWxn6/eN8qrid6WOnrnH5LnQ1Md0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkX0eu/dJMcaaKWxn6/eN8qrid6WOnrnH5LnQ1Md0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkX0eu%2FdJMcaaKWxn6%2FeN8qrid6WOnrnH5LnQ1Md0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1315&quot; height=&quot;17&quot; data-origin-width=&quot;1315&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HC-128 State 초기화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1253&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R2lhv/dJMcahcdDxx/5yhnkc5IrzTJ3OFlv6X4jK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R2lhv/dJMcahcdDxx/5yhnkc5IrzTJ3OFlv6X4jK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R2lhv/dJMcahcdDxx/5yhnkc5IrzTJ3OFlv6X4jK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR2lhv%2FdJMcahcdDxx%2F5yhnkc5IrzTJ3OFlv6X4jK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1253&quot; height=&quot;21&quot; data-origin-width=&quot;1253&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 크기 별 분기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1075&quot; data-origin-height=&quot;100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuj2sA/dJMcaioGNt4/5LnJDENrq17Ta6X69VMXu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuj2sA/dJMcaioGNt4/5LnJDENrq17Ta6X69VMXu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuj2sA/dJMcaioGNt4/5LnJDENrq17Ta6X69VMXu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcuj2sA%2FdJMcaioGNt4%2F5LnJDENrq17Ta6X69VMXu0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1075&quot; height=&quot;100&quot; data-origin-width=&quot;1075&quot; data-origin-height=&quot;100&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1035&quot; data-origin-height=&quot;41&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bS9zj9/dJMcaioGNuh/2eR4jYNxmmtQK1eXfMCjXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bS9zj9/dJMcaioGNuh/2eR4jYNxmmtQK1eXfMCjXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bS9zj9/dJMcaioGNuh/2eR4jYNxmmtQK1eXfMCjXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbS9zj9%2FdJMcaioGNuh%2F2eR4jYNxmmtQK1eXfMCjXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1035&quot; height=&quot;41&quot; data-origin-width=&quot;1035&quot; data-origin-height=&quot;41&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 암호화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1442&quot; data-origin-height=&quot;137&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/daSFRq/dJMcahcdDx4/irt3hVFWrBoIKjGQA2x2pk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/daSFRq/dJMcahcdDx4/irt3hVFWrBoIKjGQA2x2pk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/daSFRq/dJMcahcdDx4/irt3hVFWrBoIKjGQA2x2pk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdaSFRq%2FdJMcahcdDx4%2Firt3hVFWrBoIKjGQA2x2pk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1442&quot; height=&quot;137&quot; data-origin-width=&quot;1442&quot; data-origin-height=&quot;137&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 끝 메타데이터 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1315&quot; data-origin-height=&quot;121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bo7wn6/dJMcahcdDym/BolAWAn6atK0VLMZHLl521/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bo7wn6/dJMcahcdDym/BolAWAn6atK0VLMZHLl521/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bo7wn6/dJMcahcdDym/BolAWAn6atK0VLMZHLl521/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbo7wn6%2FdJMcahcdDym%2FBolAWAn6atK0VLMZHLl521%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1315&quot; height=&quot;121&quot; data-origin-width=&quot;1315&quot; data-origin-height=&quot;121&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; Curve25519 스칼라 곱셈 함수 &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1167&quot; data-origin-height=&quot;237&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bl1euM/dJMcahcdDyI/KKXaafSOEpBT2nZktkN720/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bl1euM/dJMcahcdDyI/KKXaafSOEpBT2nZktkN720/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bl1euM/dJMcahcdDyI/KKXaafSOEpBT2nZktkN720/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbl1euM%2FdJMcahcdDyI%2FKKXaafSOEpBT2nZktkN720%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1167&quot; height=&quot;237&quot; data-origin-width=&quot;1167&quot; data-origin-height=&quot;237&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; SHA-512 해싱 함수 &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;157&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1DfNt/dJMcafer4tA/rGQiVNSyeuHUqlf6CwOdA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1DfNt/dJMcafer4tA/rGQiVNSyeuHUqlf6CwOdA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1DfNt/dJMcafer4tA/rGQiVNSyeuHUqlf6CwOdA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1DfNt%2FdJMcafer4tA%2FrGQiVNSyeuHUqlf6CwOdA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1060&quot; height=&quot;157&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;157&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; HC-128 State 초기화 함수 &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1287&quot; data-origin-height=&quot;301&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dvBGeV/dJMcadnkqb9/uODRQUS5Iz7kLV6qI1NzB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dvBGeV/dJMcadnkqb9/uODRQUS5Iz7kLV6qI1NzB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dvBGeV/dJMcadnkqb9/uODRQUS5Iz7kLV6qI1NzB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdvBGeV%2FdJMcadnkqb9%2FuODRQUS5Iz7kLV6qI1NzB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1287&quot; height=&quot;301&quot; data-origin-width=&quot;1287&quot; data-origin-height=&quot;301&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; HC-128 키스트림 XOR 함수 &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1156&quot; data-origin-height=&quot;477&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A379r/dJMcahwyhdC/FbTHphUSfV3DMulMWYxlIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A379r/dJMcahwyhdC/FbTHphUSfV3DMulMWYxlIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A379r/dJMcahwyhdC/FbTHphUSfV3DMulMWYxlIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA379r%2FdJMcahwyhdC%2FFbTHphUSfV3DMulMWYxlIk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1156&quot; height=&quot;477&quot; data-origin-width=&quot;1156&quot; data-origin-height=&quot;477&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 5. 복호화 기술 분석 (Decryption Strategy)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.1 복호화 가능성 분석&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ECDH 복호화 불가능 원리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770362616223&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;공유 비밀 복원 조건:
s = Curve25519(a, B) = Curve25519(b, A)

복호화를 위해 필요:
- 피해자 개인키(a) 또는 공격자 개인키(b)

문제점:
- 피해자는 a를 모름 (CryptGenRandom 후 메모리에서 소멸)
- 공격자만 b를 보유
- A만으로는 a를 역산 불가능 (이산로그 문제)&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.2 CryptGenRandom 키 복구 메커니즘&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;취약점 구조&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770362635492&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CryptGenRandom API 호출
         &amp;darr;
   평문 개인키 생성 (32B)
         &amp;darr;
  ★ API 후킹 지점 ★  &amp;larr; 키 캡처!
         &amp;darr;
  ECDH 공유 비밀 계산
         &amp;darr;
   SHA-512 KDF
         &amp;darr;
  HC-128 암호화 수행&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.3 자동화 복호화 스크립트 개발&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;5.3.1 핵심 복호화 로직&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 개인키 후보 도출&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770362658494&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def derive_candidates_from_json(json_path, attacker_pubkey):
    &quot;&quot;&quot;JSON에서 CryptGenRandom(32바이트) 이벤트 추출&quot;&quot;&quot;
    candidates = []
    
    for ev in events:
        if (ev.get(&quot;api&quot;) == &quot;CryptGenRandom&quot; and 
            ev.get(&quot;length_bytes&quot;) == 32):
            
            priv = bytes.fromhex(ev[&quot;payload_hex&quot;])
            
            # ECDH 공유 비밀 계산
            shared = x25519(priv, attacker_pubkey)
            
            # SHA-512 KDF
            master = hashlib.sha512(shared).digest()
            key = master[:32]
            iv = master[32:64]
            
            candidates.append({
                &quot;source_priv&quot;: ev[&quot;payload_hex&quot;],
                &quot;key_hex&quot;: key.hex(),
                &quot;iv_hex&quot;: iv.hex()
            })
    
    return candidates&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. HC-128 복호화&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770362672013&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def decrypt_bytes_hc128(cipher: bytes, key_hex: str, iv_hex: str) -&amp;gt; bytes:
    &quot;&quot;&quot;HC-128 스트림 암호 복호화 (XOR 기반)&quot;&quot;&quot;
    key = bytes.fromhex(key_hex)
    iv = bytes.fromhex(iv_hex)
    
    # State 초기화
    state = alloc_state()
    init_state(state, key_words, 256, 256)
    apply_iv(state, iv_words)
    
    # 키스트림 생성 및 XOR
    out = bytearray(cipher)
    generate_keystream_xor(state, cipher[:dec_len], out, dec_len)
    
    return bytes(out)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 매직 바이트 검증&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770362683062&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def looks_valid_magic(output_path, data: bytes) -&amp;gt; bool:
    &quot;&quot;&quot;복호화 결과 시그니처 검증&quot;&quot;&quot;
    ext = os.path.splitext(output_path)[1].lower()
    
    if ext in (&quot;.jpg&quot;, &quot;.jpeg&quot;):
        return data.startswith(b&quot;\xFF\xD8\xFF&quot;)  # JPEG SOI
    if ext == &quot;.png&quot;:
        return data.startswith(b&quot;\x89PNG\r\n\x1a\n&quot;)
    if ext == &quot;.pdf&quot;:
        return data.startswith(b&quot;%PDF&quot;)
    # ...&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 5.4 무결성 검증&lt;/b&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;파일 유형&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;매직 넘버 (Hex)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JPG&lt;/td&gt;
&lt;td&gt;FF D8 FF E0/E1/DB&lt;/td&gt;
&lt;td&gt;JPEG 이미지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PNG&lt;/td&gt;
&lt;td&gt;89 50 4E 47 0D 0A 1A 0A&lt;/td&gt;
&lt;td&gt;PNG 이미지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PDF&lt;/td&gt;
&lt;td&gt;25 50 44 46&lt;/td&gt;
&lt;td&gt;PDF 문서&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ZIP/DOCX&lt;/td&gt;
&lt;td&gt;50 4B 03 04&lt;/td&gt;
&lt;td&gt;압축 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EXE/DLL&lt;/td&gt;
&lt;td&gt;4D 5A&lt;/td&gt;
&lt;td&gt;Windows 실행 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 6. 요약 및 결론 (Conclusion)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 6.1 최종 평가&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Cloak 랜섬웨어는 &lt;span data-token-index=&quot;1&quot;&gt;암호학적으로 안전한 ECDH + HC-128 하이브리드 방식&lt;/span&gt;을 채택하여, 공격자 개인키 없이는 복호화가 불가능한 구조를 가지고 있습니다. 그러나 &lt;span data-token-index=&quot;3&quot;&gt;CryptGenRandom API 호출 시점에 평문 개인키가 메모리에 존재&lt;/span&gt;하는 구조적 취약점으로 인해, API 후킹을 통한 실시간 키 캡처가 가능하며, 이를 활용한 완벽한 복호화가 실증되었습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1770362749586&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[취약점 요약]
CryptGenRandom(32바이트)
         &amp;darr;
   평문 개인키 생성
         &amp;darr;
  ★ API 후킹 지점 ★
         &amp;darr;
ECDH + SHA-512 + HC-128
         &amp;darr;
  파일 암호화 완료&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.2 대응 가이드&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;6.2.1 예방적 조치&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;API 모니터링 강화&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CryptGenRandom 호출 패턴 실시간 탐지&lt;/li&gt;
&lt;li&gt;의심스러운 대량 난수 생성 차단&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;행위 기반 탐지&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대량 파일 접근 패턴 탐지&lt;/li&gt;
&lt;li&gt;.crYpt 확장자 추가 행위 차단&lt;/li&gt;
&lt;li&gt;프로세스 교체(Process Hollowing) 탐지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;파일 시스템 보호&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실시간 백업 시스템 구축&lt;/li&gt;
&lt;li&gt;VSS 삭제 시도 탐지 및 차단&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;6.2.2 사후 대응&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;초동 조치&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;감염 발견 즉시 시스템 격리&lt;/li&gt;
&lt;li&gt;&lt;b&gt;메모리 덤프 수행&lt;/b&gt; (시스템 종료 금지)&lt;/li&gt;
&lt;li&gt;프로세스 메모리에서 CryptGenRandom 키 추출&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;키 복구&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;API 후킹 도구로 CryptGenRandom 로그 확보&lt;/li&gt;
&lt;li&gt;메모리 포렌식으로 32바이트 개인키 패턴 추출&lt;/li&gt;
&lt;li&gt;JSON 로그 파일에서 키 후보 도출&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;복호화 수행&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;추출한 개인키로 ECDH 공유 비밀 재계산&lt;/li&gt;
&lt;li&gt;HC-128 복호화 및 매직 바이트 검증&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 6.3 기술적 특징 요약&lt;/b&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;세부 내용&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;암호화 알고리즘&lt;/td&gt;
&lt;td&gt;ECDH(Curve25519) + HC-128 Stream Cipher&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;키 관리&lt;/td&gt;
&lt;td&gt;파일별 독립 32바이트 개인키 (CryptGenRandom)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KDF&lt;/td&gt;
&lt;td&gt;SHA-512 (64바이트 출력 &amp;rarr; 32B Key + 32B IV)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;확장자&lt;/td&gt;
&lt;td&gt;.crYpt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;공격자 공개키&lt;/td&gt;
&lt;td&gt;하드코딩 (3B4C31C6857B5C...)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;복호화 가능성&lt;/td&gt;
&lt;td&gt;API 후킹으로 개인키 확보 시 100% 복구 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;회피 기법&lt;/td&gt;
&lt;td&gt;프로세스 교체, 자가 삭제, 안티디버깅&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.4 결론&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Cloak 랜섬웨어는 &lt;b&gt;ECDH 키 교환과 HC-128 스트림 암호화를 결합한 강력한 암호학적 구조&lt;/b&gt;를 가지고 있지만, &lt;b&gt;키 생성 과정에서 CryptGenRandom API를 직접 호출하는 설계상 취약점&lt;/b&gt;으로 인해 API 후킹을 통한 복호화가 가능합니다. 본 분석에서 개발한 자동화 복호화 도구는 Cloak 감염 피해 복구에 직접 활용될 수 있으며, 향후 유사 랜섬웨어 대응을 위해서는 &lt;b&gt;암호화 API 실시간 모니터링 체계 구축&lt;/b&gt;과 &lt;b&gt;메모리 포렌식 역량 강화&lt;/b&gt;가 필수적입니다.&lt;/p&gt;</description>
      <category>랜섬웨어 분석 보고서</category>
      <author>geonwoo9643</author>
      <guid isPermaLink="true">https://mzcompany.tistory.com/14</guid>
      <comments>https://mzcompany.tistory.com/14#entry14comment</comments>
      <pubDate>Fri, 6 Feb 2026 16:29:05 +0900</pubDate>
    </item>
    <item>
      <title>Akira 랜섬웨어 분석 보고서</title>
      <link>https://mzcompany.tistory.com/13</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; &lt;span data-token-index=&quot;0&quot;&gt;1. 개요 (Overview)&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Akira 랜섬웨어는 2024년 11월에 관측된 ChaCha 스트림 암호 기반 랜섬웨어다. Windows CryptoAPI의 CryptGenRandom으로 생성한 암호화 키를 가공 없이 ChaCha State에 직접 사용하며, 표준 ChaCha20 대비 라운드 수를 절반으로 축소한 ChaCha8 변형을 사용한다. 파일 크기의 절반만 암호화하는 부분 암호화 방식으로 속도를 최적화했으며, 534바이트 Footer에 RSA로 암호화된 키 정보를 저장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 2. 식별 정보 (Identification)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;b&gt;Malware Family&lt;/b&gt;: Akira&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;b&gt;Filetype&lt;/b&gt;: PE32 (Windows Executable)&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;b&gt;Hash (SHA256)&lt;/b&gt;: 2e2ad6392e75d5a5155498c2a76cb373d17ca3ad4ba57c6d33c623fca5e29342&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;b&gt;Extension&lt;/b&gt;: .akira&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;b&gt;First Seen&lt;/b&gt;: 2024-11-05 12:20:13 UTC&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;b&gt;Target&lt;/b&gt;: Windows 기반 시스템 (x64)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 3. 분석 환경 및 도구 (Tools)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;table style=&quot;color: #333333; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;도구명 (Tool)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;용도 (Purpose)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;정적 분석&lt;/td&gt;
&lt;td&gt;IDA Pro&lt;/td&gt;
&lt;td&gt;ChaCha8 구현 루틴 및 암호화 로직 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;동적 분석&lt;/td&gt;
&lt;td&gt;CryptGenRandom API Hooking (Detours)&lt;/td&gt;
&lt;td&gt;실시간 키 및 nonce 추출&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;행위 분석&lt;/td&gt;
&lt;td&gt;Process Monitor&lt;/td&gt;
&lt;td&gt;파일 I/O 및 암호화 행위 추적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;검증 도구&lt;/td&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;td&gt;ChaCha8 복호화 스크립트 개발 및 PoC&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 4. 암호화 기술 분석 (Technical Analysis)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 4.1 암호화 키 생성&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1770318352288&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CryptGenRandom(32 bytes) &amp;rarr; Key Storage (a1+312)
CryptGenRandom(8 bytes) &amp;rarr; Nonce Storage (a1+304)
         &amp;darr;
RSA 암호화용 복사본 생성 (Footer 저장)
         &amp;darr;
원본 키/논스 유지 (가공 없음)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;핵심 특징&lt;/span&gt;:&lt;/b&gt; CryptGenRandom 출력값을 &lt;span data-token-index=&quot;2&quot;&gt;가공 없이&lt;/span&gt; ChaCha State에 직접 사용&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 4.2 ChaCha State 초기화&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1770318378651&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;state[0-3]   = &quot;expand 32-byte k&quot;  # 상수
state[4-11]  = Key (32 bytes, 8 words from a1+312)
state[12-13] = Counter = 0
state[14-15] = Nonce (8 bytes, 2 words from a1+304)&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 4.3 커스텀 ChaCha8 구현&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;라운드 구조&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;표준 ChaCha20&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Akira ChaCha8&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Double Rounds&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quarter Rounds&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;블록 크기&lt;/td&gt;
&lt;td&gt;64 bytes&lt;/td&gt;
&lt;td&gt;64 bytes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;4번 반복 (Double Round)&lt;/span&gt; &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770318437166&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Round 1: Column Round + Diagonal Round
Round 2: Column Round + Diagonal Round
Round 3: Column Round + Diagonal Round
Round 4: Column Round + Diagonal Round&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; &lt;span data-token-index=&quot;0&quot;&gt;Keystream 생성&lt;/span&gt; &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770318446768&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;변환된 State + 원본 State = Keystream (64 bytes)
Ciphertext &amp;oplus; Keystream = Plaintext&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 4.4 파일 암호화 구조 (&amp;gt; 2,000,000 bytes) &lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1770318461020&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;graph TD
    A[Original File] --&amp;gt; B[Encrypted Block&amp;lt;br/&amp;gt;Size: File Size / 2]
    A --&amp;gt; C[Plain Text Block&amp;lt;br/&amp;gt;Size: File Size / 2]
    B --&amp;gt; D[Encrypted File]
    C --&amp;gt; D
    E[File Footer&amp;lt;br/&amp;gt;534 bytes&amp;lt;br/&amp;gt;RSA Encrypted Key/Nonce] --&amp;gt; D&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1770318471244&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;**구조 상세**

| Block Type | Size |
|------------|------|
| Encrypted Block | File Size / 2 |
| Plain Text Block | File Size / 2 |
| File Footer | 534 bytes |&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 4.5 암호화 함수 흐름&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1770318490651&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;암호화 함수
    &amp;darr;
키/논스 생성 및 저장
    &amp;darr;
ChaCha State 초기화
    &amp;darr;
4 Double Rounds 실행
    &amp;darr;
Keystream 생성
    &amp;darr;
XOR 암호화 (파일 절반만)
    &amp;darr;
Footer 추가 (RSA 암호화된 키/논스)&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 4.6 정적 분석&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; main 함수&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;명령줄 인자&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1032&quot; data-origin-height=&quot;76&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SNKVQ/dJMcag5twfA/nCw9zZht2fBOyP4PLVkMpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SNKVQ/dJMcag5twfA/nCw9zZht2fBOyP4PLVkMpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SNKVQ/dJMcag5twfA/nCw9zZht2fBOyP4PLVkMpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSNKVQ%2FdJMcag5twfA%2FnCw9zZht2fBOyP4PLVkMpk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1032&quot; height=&quot;76&quot; data-origin-width=&quot;1032&quot; data-origin-height=&quot;76&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;41&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxzzgV/dJMcahi1rhB/TsZa4cwaf5vpKujo2ImVW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxzzgV/dJMcahi1rhB/TsZa4cwaf5vpKujo2ImVW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxzzgV/dJMcahi1rhB/TsZa4cwaf5vpKujo2ImVW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxzzgV%2FdJMcahi1rhB%2FTsZa4cwaf5vpKujo2ImVW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1012&quot; height=&quot;41&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;41&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1033&quot; data-origin-height=&quot;78&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBnlLJ/dJMcadHCLPk/FatDchHvKNv0Z5jdpF4J20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBnlLJ/dJMcadHCLPk/FatDchHvKNv0Z5jdpF4J20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBnlLJ/dJMcadHCLPk/FatDchHvKNv0Z5jdpF4J20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBnlLJ%2FdJMcadHCLPk%2FFatDchHvKNv0Z5jdpF4J20%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1033&quot; height=&quot;78&quot; data-origin-width=&quot;1033&quot; data-origin-height=&quot;78&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1032&quot; data-origin-height=&quot;80&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUTSfA/dJMcabQBEYA/VGwjbJd42oCFkAPkoulF70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUTSfA/dJMcabQBEYA/VGwjbJd42oCFkAPkoulF70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUTSfA/dJMcabQBEYA/VGwjbJd42oCFkAPkoulF70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUTSfA%2FdJMcabQBEYA%2FVGwjbJd42oCFkAPkoulF70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1032&quot; height=&quot;80&quot; data-origin-width=&quot;1032&quot; data-origin-height=&quot;80&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1770318550792&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;--encryption_path: 암호화 대상 경로
--share_file: 공유 파일 목록
--encryption_percent: 파일 암호화 비율 (기본 50%)
-l: 로컬 드라이브만 대상&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 목록 수집&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;82&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YfW96/dJMcahDhiqg/4fU1niDOitDcej45UovePK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YfW96/dJMcahDhiqg/4fU1niDOitDcej45UovePK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YfW96/dJMcahDhiqg/4fU1niDOitDcej45UovePK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYfW96%2FdJMcahDhiqg%2F4fU1niDOitDcej45UovePK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1027&quot; height=&quot;82&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;82&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1183&quot; data-origin-height=&quot;338&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZfFef/dJMcahDhiqi/oeXq9pGyCxFfSIGqTJtwZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZfFef/dJMcahDhiqi/oeXq9pGyCxFfSIGqTJtwZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZfFef/dJMcahDhiqi/oeXq9pGyCxFfSIGqTJtwZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZfFef%2FdJMcahDhiqi%2FoeXq9pGyCxFfSIGqTJtwZ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1183&quot; height=&quot;338&quot; data-origin-width=&quot;1183&quot; data-origin-height=&quot;338&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1028&quot; data-origin-height=&quot;22&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kGxfu/dJMcacWg6wU/AvuPfVgFxkdmaYtPA951N1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kGxfu/dJMcacWg6wU/AvuPfVgFxkdmaYtPA951N1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kGxfu/dJMcacWg6wU/AvuPfVgFxkdmaYtPA951N1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkGxfu%2FdJMcacWg6wU%2FAvuPfVgFxkdmaYtPA951N1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1028&quot; height=&quot;22&quot; data-origin-width=&quot;1028&quot; data-origin-height=&quot;22&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RSA 공개키 로드 (Microsoft Enhanced RSA and AES Provider)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1268&quot; data-origin-height=&quot;242&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJwDGj/dJMcadAPNwT/ZpXIuf91cB7JeUQkRJWkMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJwDGj/dJMcadAPNwT/ZpXIuf91cB7JeUQkRJWkMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJwDGj/dJMcadAPNwT/ZpXIuf91cB7JeUQkRJWkMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJwDGj%2FdJMcadAPNwT%2FZpXIuf91cB7JeUQkRJWkMk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1268&quot; height=&quot;242&quot; data-origin-width=&quot;1268&quot; data-origin-height=&quot;242&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;스레드 풀 생성 (CPU 코어 수)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1030&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAGd86/dJMcabbZ5cU/bruG5kutquBHGD5Yrq4ftK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAGd86/dJMcabbZ5cU/bruG5kutquBHGD5Yrq4ftK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAGd86/dJMcabbZ5cU/bruG5kutquBHGD5Yrq4ftK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAGd86%2FdJMcabbZ5cU%2FbruG5kutquBHGD5Yrq4ftK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1030&quot; height=&quot;18&quot; data-origin-width=&quot;1030&quot; data-origin-height=&quot;18&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1043&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/trhNC/dJMcaaEbAnS/XNr3U17ziFivYnsbRkMePk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/trhNC/dJMcaaEbAnS/XNr3U17ziFivYnsbRkMePk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/trhNC/dJMcaaEbAnS/XNr3U17ziFivYnsbRkMePk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtrhNC%2FdJMcaaEbAnS%2FXNr3U17ziFivYnsbRkMePk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1043&quot; height=&quot;20&quot; data-origin-width=&quot;1043&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 목록 순회&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1023&quot; data-origin-height=&quot;37&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxeVjg/dJMcahwx1gj/G30RAftFSkkppzpnY0rMm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxeVjg/dJMcahwx1gj/G30RAftFSkkppzpnY0rMm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxeVjg/dJMcahwx1gj/G30RAftFSkkppzpnY0rMm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxeVjg%2FdJMcahwx1gj%2FG30RAftFSkkppzpnY0rMm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1023&quot; height=&quot;37&quot; data-origin-width=&quot;1023&quot; data-origin-height=&quot;37&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;암호화 함수 호출 (경로, RSA키, 암호화 비율, 네트워크 공유 플래그)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbImXX/dJMcachG69k/bqEnlxk4tvCgGK9cMo3nDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbImXX/dJMcachG69k/bqEnlxk4tvCgGK9cMo3nDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbImXX/dJMcachG69k/bqEnlxk4tvCgGK9cMo3nDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbImXX%2FdJMcachG69k%2FbqEnlxk4tvCgGK9cMo3nDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1510&quot; height=&quot;21&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1030&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7aNcX/dJMcacWg6w3/hHPJx5z1o2nFJsz8eMs1Yk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7aNcX/dJMcacWg6w3/hHPJx5z1o2nFJsz8eMs1Yk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7aNcX/dJMcacWg6w3/hHPJx5z1o2nFJsz8eMs1Yk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7aNcX%2FdJMcacWg6w3%2FhHPJx5z1o2nFJsz8eMs1Yk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1030&quot; height=&quot;300&quot; data-origin-width=&quot;1030&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1007&quot; data-origin-height=&quot;117&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AE42i/dJMcahXBId2/HnKwTk9Bbd6ikekfW4Pq8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AE42i/dJMcahXBId2/HnKwTk9Bbd6ikekfW4Pq8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AE42i/dJMcahXBId2/HnKwTk9Bbd6ikekfW4Pq8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAE42i%2FdJMcahXBId2%2FHnKwTk9Bbd6ikekfW4Pq8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1007&quot; height=&quot;117&quot; data-origin-width=&quot;1007&quot; data-origin-height=&quot;117&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oiyXh/dJMcajujwGj/oekInNewlh4olOfPoaPBh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oiyXh/dJMcajujwGj/oekInNewlh4olOfPoaPBh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oiyXh/dJMcajujwGj/oekInNewlh4olOfPoaPBh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoiyXh%2FdJMcajujwGj%2FoekInNewlh4olOfPoaPBh0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1027&quot; height=&quot;21&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;161&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bORMBK/dJMcahXBIeo/1mtn2ZWuaawVObo43fjcL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bORMBK/dJMcahXBIeo/1mtn2ZWuaawVObo43fjcL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bORMBK/dJMcahXBIeo/1mtn2ZWuaawVObo43fjcL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbORMBK%2FdJMcahXBIeo%2F1mtn2ZWuaawVObo43fjcL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1226&quot; height=&quot;161&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;161&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1507&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzVrVu/dJMcahcdpa2/AzAtkv1r1K6wdywjsrAxVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzVrVu/dJMcahcdpa2/AzAtkv1r1K6wdywjsrAxVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzVrVu/dJMcahcdpa2/AzAtkv1r1K6wdywjsrAxVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzVrVu%2FdJMcahcdpa2%2FAzAtkv1r1K6wdywjsrAxVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1507&quot; height=&quot;21&quot; data-origin-width=&quot;1507&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1322&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MlYOH/dJMcaiPGJXK/1RYn4bizFqZYBDqIxWs5rk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MlYOH/dJMcaiPGJXK/1RYn4bizFqZYBDqIxWs5rk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MlYOH/dJMcaiPGJXK/1RYn4bizFqZYBDqIxWs5rk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMlYOH%2FdJMcaiPGJXK%2F1RYn4bizFqZYBDqIxWs5rk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1322&quot; height=&quot;18&quot; data-origin-width=&quot;1322&quot; data-origin-height=&quot;18&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;암호화 작업 완료 대기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1220&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCtOsW/dJMb99L0J16/YvIZ1h0gpcATZW69Gca5S0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCtOsW/dJMb99L0J16/YvIZ1h0gpcATZW69Gca5S0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCtOsW/dJMb99L0J16/YvIZ1h0gpcATZW69Gca5S0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCtOsW%2FdJMb99L0J16%2FYvIZ1h0gpcATZW69Gca5S0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1220&quot; height=&quot;17&quot; data-origin-width=&quot;1220&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;소요 시간 출력&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1033&quot; data-origin-height=&quot;56&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A0uFf/dJMcabC5T1Q/KkXSB7lknU1EtITayK5iW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A0uFf/dJMcabC5T1Q/KkXSB7lknU1EtITayK5iW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A0uFf/dJMcabC5T1Q/KkXSB7lknU1EtITayK5iW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA0uFf%2FdJMcabC5T1Q%2FKkXSB7lknU1EtITayK5iW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1033&quot; height=&quot;56&quot; data-origin-width=&quot;1033&quot; data-origin-height=&quot;56&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt; 메인 암호화 State Machine&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;State 2: 암호화 초기화&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CryptGenRandom 키/논스 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1507&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3Wi3j/dJMcajujwGt/9FxR4KkiOKXgFx52aLgIM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3Wi3j/dJMcajujwGt/9FxR4KkiOKXgFx52aLgIM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3Wi3j/dJMcajujwGt/9FxR4KkiOKXgFx52aLgIM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3Wi3j%2FdJMcajujwGt%2F9FxR4KkiOKXgFx52aLgIM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1507&quot; height=&quot;440&quot; data-origin-width=&quot;1507&quot; data-origin-height=&quot;440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ChaCha State 초기화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;951&quot; data-origin-height=&quot;301&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FPctu/dJMcac21HD1/tkYX4m8vtzAvp7CiR5nFXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FPctu/dJMcac21HD1/tkYX4m8vtzAvp7CiR5nFXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FPctu/dJMcac21HD1/tkYX4m8vtzAvp7CiR5nFXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFPctu%2FdJMcac21HD1%2FtkYX4m8vtzAvp7CiR5nFXk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;951&quot; height=&quot;301&quot; data-origin-width=&quot;951&quot; data-origin-height=&quot;301&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 열기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1065&quot; data-origin-height=&quot;117&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ct0Xq3/dJMcadU9JNR/xAN6bT4baJsdO9yiDInjwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ct0Xq3/dJMcadU9JNR/xAN6bT4baJsdO9yiDInjwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ct0Xq3/dJMcadU9JNR/xAN6bT4baJsdO9yiDInjwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fct0Xq3%2FdJMcadU9JNR%2FxAN6bT4baJsdO9yiDInjwK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1065&quot; height=&quot;117&quot; data-origin-width=&quot;1065&quot; data-origin-height=&quot;117&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 크기 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;953&quot; data-origin-height=&quot;140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dVFHZN/dJMcajnwOc5/3nl3vCO2EI8dzGeKxjVpx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dVFHZN/dJMcajnwOc5/3nl3vCO2EI8dzGeKxjVpx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dVFHZN/dJMcajnwOc5/3nl3vCO2EI8dzGeKxjVpx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdVFHZN%2FdJMcajnwOc5%2F3nl3vCO2EI8dzGeKxjVpx0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;953&quot; height=&quot;140&quot; data-origin-width=&quot;953&quot; data-origin-height=&quot;140&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 암호화 모드 결정 (&amp;le; 2MB &amp;rarr; 전체 암호화 / &amp;gt; 2MB &amp;rarr; 절반만 암호화)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;63&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nfJoj/dJMcagEpLel/TkCOzaje2vstHL1enssKk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nfJoj/dJMcagEpLel/TkCOzaje2vstHL1enssKk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nfJoj/dJMcagEpLel/TkCOzaje2vstHL1enssKk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnfJoj%2FdJMcagEpLel%2FTkCOzaje2vstHL1enssKk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;63&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;63&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전체 암호화 (&amp;le; 2MB)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1142&quot; data-origin-height=&quot;121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sC8Wx/dJMcaaRJISR/AlrXwhA0rRgceSHGv7hFU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sC8Wx/dJMcaaRJISR/AlrXwhA0rRgceSHGv7hFU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sC8Wx/dJMcaaRJISR/AlrXwhA0rRgceSHGv7hFU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsC8Wx%2FdJMcaaRJISR%2FAlrXwhA0rRgceSHGv7hFU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1142&quot; height=&quot;121&quot; data-origin-width=&quot;1142&quot; data-origin-height=&quot;121&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;942&quot; data-origin-height=&quot;201&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nwMjv/dJMcaaEbAp3/xsVkA7UA7DwDOG0NFku1n1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nwMjv/dJMcaaEbAp3/xsVkA7UA7DwDOG0NFku1n1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nwMjv/dJMcaaEbAp3/xsVkA7UA7DwDOG0NFku1n1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnwMjv%2FdJMcaaEbAp3%2FxsVkA7UA7DwDOG0NFku1n1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;942&quot; height=&quot;201&quot; data-origin-width=&quot;942&quot; data-origin-height=&quot;201&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1063&quot; data-origin-height=&quot;97&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUlrXP/dJMcac21HD5/5sWaGHwKVwjHYEVS4wK4e1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUlrXP/dJMcac21HD5/5sWaGHwKVwjHYEVS4wK4e1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUlrXP/dJMcac21HD5/5sWaGHwKVwjHYEVS4wK4e1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUlrXP%2FdJMcac21HD5%2F5sWaGHwKVwjHYEVS4wK4e1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1063&quot; height=&quot;97&quot; data-origin-width=&quot;1063&quot; data-origin-height=&quot;97&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;947&quot; data-origin-height=&quot;120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bscBYA/dJMcaaKWjeO/UECWQAe0PhS0cbP5JFKIrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bscBYA/dJMcaaKWjeO/UECWQAe0PhS0cbP5JFKIrk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bscBYA/dJMcaaKWjeO/UECWQAe0PhS0cbP5JFKIrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbscBYA%2FdJMcaaKWjeO%2FUECWQAe0PhS0cbP5JFKIrk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;947&quot; height=&quot;120&quot; data-origin-width=&quot;947&quot; data-origin-height=&quot;120&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;스팟 암호화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1073&quot; data-origin-height=&quot;61&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cor4pg/dJMcadgABwf/up5Q5CuJfG5VQPii3kJAkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cor4pg/dJMcadgABwf/up5Q5CuJfG5VQPii3kJAkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cor4pg/dJMcadgABwf/up5Q5CuJfG5VQPii3kJAkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcor4pg%2FdJMcadgABwf%2Fup5Q5CuJfG5VQPii3kJAkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1073&quot; height=&quot;61&quot; data-origin-width=&quot;1073&quot; data-origin-height=&quot;61&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1212&quot; data-origin-height=&quot;398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCs09J/dJMcabwiSSP/4XRK7GZPlRQaRNKEJgMuG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCs09J/dJMcabwiSSP/4XRK7GZPlRQaRNKEJgMuG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCs09J/dJMcabwiSSP/4XRK7GZPlRQaRNKEJgMuG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCs09J%2FdJMcabwiSSP%2F4XRK7GZPlRQaRNKEJgMuG1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1212&quot; height=&quot;398&quot; data-origin-width=&quot;1212&quot; data-origin-height=&quot;398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;97&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AWnDS/dJMcabwiSSQ/yK2sPf2lglPT6PziE81dr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AWnDS/dJMcabwiSSQ/yK2sPf2lglPT6PziE81dr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AWnDS/dJMcabwiSSQ/yK2sPf2lglPT6PziE81dr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAWnDS%2FdJMcabwiSSQ%2FyK2sPf2lglPT6PziE81dr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;97&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;97&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1105&quot; data-origin-height=&quot;518&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHFTil/dJMcaaqD0ch/z3adJ0kDL9lh7kEtNoCKGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHFTil/dJMcaaqD0ch/z3adJ0kDL9lh7kEtNoCKGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHFTil/dJMcaaqD0ch/z3adJ0kDL9lh7kEtNoCKGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHFTil%2FdJMcaaqD0ch%2Fz3adJ0kDL9lh7kEtNoCKGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1105&quot; height=&quot;518&quot; data-origin-width=&quot;1105&quot; data-origin-height=&quot;518&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;절반 암호화 (&amp;gt; 2MB)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1155&quot; data-origin-height=&quot;60&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4QvlD/dJMcabwiSSR/KTs8Uf3RBZgxFVXI00cuv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4QvlD/dJMcabwiSSR/KTs8Uf3RBZgxFVXI00cuv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4QvlD/dJMcabwiSSR/KTs8Uf3RBZgxFVXI00cuv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4QvlD%2FdJMcabwiSSR%2FKTs8Uf3RBZgxFVXI00cuv0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1155&quot; height=&quot;60&quot; data-origin-width=&quot;1155&quot; data-origin-height=&quot;60&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1137&quot; data-origin-height=&quot;418&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pAMk8/dJMcabwiSST/Tute3IVFmBltfruTRNYXIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pAMk8/dJMcabwiSST/Tute3IVFmBltfruTRNYXIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pAMk8/dJMcabwiSST/Tute3IVFmBltfruTRNYXIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpAMk8%2FdJMcabwiSST%2FTute3IVFmBltfruTRNYXIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1137&quot; height=&quot;418&quot; data-origin-width=&quot;1137&quot; data-origin-height=&quot;418&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1172&quot; data-origin-height=&quot;100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CcH2G/dJMcadOm0lr/mMESJioZNhfzicJ8GYneIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CcH2G/dJMcadOm0lr/mMESJioZNhfzicJ8GYneIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CcH2G/dJMcadOm0lr/mMESJioZNhfzicJ8GYneIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCcH2G%2FdJMcadOm0lr%2FmMESJioZNhfzicJ8GYneIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1172&quot; height=&quot;100&quot; data-origin-width=&quot;1172&quot; data-origin-height=&quot;100&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;975&quot; data-origin-height=&quot;97&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wJAIi/dJMcacorXz4/fh6oiNekRDgMPU39gpEoFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wJAIi/dJMcacorXz4/fh6oiNekRDgMPU39gpEoFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wJAIi/dJMcacorXz4/fh6oiNekRDgMPU39gpEoFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwJAIi%2FdJMcacorXz4%2Ffh6oiNekRDgMPU39gpEoFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;975&quot; height=&quot;97&quot; data-origin-width=&quot;975&quot; data-origin-height=&quot;97&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ChaCha8 암호화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;967&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4fTch/dJMcaflbcy6/skPz7cBdwo9PuvXCQw2Zp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4fTch/dJMcaflbcy6/skPz7cBdwo9PuvXCQw2Zp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4fTch/dJMcaflbcy6/skPz7cBdwo9PuvXCQw2Zp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4fTch%2FdJMcaflbcy6%2FskPz7cBdwo9PuvXCQw2Zp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;967&quot; height=&quot;600&quot; data-origin-width=&quot;967&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;497&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bL2t4a/dJMcadHCLV9/5hjxRPWnTHlmYO04TqC3CK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bL2t4a/dJMcadHCLV9/5hjxRPWnTHlmYO04TqC3CK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bL2t4a/dJMcadHCLV9/5hjxRPWnTHlmYO04TqC3CK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbL2t4a%2FdJMcadHCLV9%2F5hjxRPWnTHlmYO04TqC3CK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;952&quot; height=&quot;497&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;497&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;438&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kWXqX/dJMcafMgXmf/X3S4jZqPSMgK9KlDD2lkTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kWXqX/dJMcafMgXmf/X3S4jZqPSMgK9KlDD2lkTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kWXqX/dJMcafMgXmf/X3S4jZqPSMgK9KlDD2lkTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkWXqX%2FdJMcafMgXmf%2FX3S4jZqPSMgK9KlDD2lkTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1192&quot; height=&quot;438&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;438&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;958&quot; data-origin-height=&quot;562&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4FUEn/dJMcacorXz5/q5WoO7wPNBSD155BBRMNR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4FUEn/dJMcacorXz5/q5WoO7wPNBSD155BBRMNR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4FUEn/dJMcacorXz5/q5WoO7wPNBSD155BBRMNR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4FUEn%2FdJMcacorXz5%2Fq5WoO7wPNBSD155BBRMNR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;958&quot; height=&quot;562&quot; data-origin-width=&quot;958&quot; data-origin-height=&quot;562&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;980&quot; data-origin-height=&quot;577&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7aK5X/dJMcaaxp2tY/edG4v1OHtMUGOGf7sBKzSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7aK5X/dJMcaaxp2tY/edG4v1OHtMUGOGf7sBKzSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7aK5X/dJMcaaxp2tY/edG4v1OHtMUGOGf7sBKzSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7aK5X%2FdJMcaaxp2tY%2FedG4v1OHtMUGOGf7sBKzSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;980&quot; height=&quot;577&quot; data-origin-width=&quot;980&quot; data-origin-height=&quot;577&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qsrPd/dJMcaaKWjjN/4gRnoXan9WwfMmKyV6HyI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qsrPd/dJMcaaKWjjN/4gRnoXan9WwfMmKyV6HyI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qsrPd/dJMcaaKWjjN/4gRnoXan9WwfMmKyV6HyI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqsrPd%2FdJMcaaKWjjN%2F4gRnoXan9WwfMmKyV6HyI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;957&quot; height=&quot;100&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;100&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;950&quot; data-origin-height=&quot;100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6ImkD/dJMcacorXz9/fAy1yQsMTPgqZhP83I9CNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6ImkD/dJMcacorXz9/fAy1yQsMTPgqZhP83I9CNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6ImkD/dJMcacorXz9/fAy1yQsMTPgqZhP83I9CNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6ImkD%2FdJMcacorXz9%2FfAy1yQsMTPgqZhP83I9CNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;950&quot; height=&quot;100&quot; data-origin-width=&quot;950&quot; data-origin-height=&quot;100&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Footer 작성 (1바이트 플래그 + 4바이트 크기 + RSA 암호화된 키/Nonce)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1160&quot; data-origin-height=&quot;280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjQ6Zt/dJMcadHCLZz/wQKkXGkfbuzGoPa1z8cbKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjQ6Zt/dJMcadHCLZz/wQKkXGkfbuzGoPa1z8cbKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjQ6Zt/dJMcadHCLZz/wQKkXGkfbuzGoPa1z8cbKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjQ6Zt%2FdJMcadHCLZz%2FwQKkXGkfbuzGoPa1z8cbKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1160&quot; height=&quot;280&quot; data-origin-width=&quot;1160&quot; data-origin-height=&quot;280&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일명 변경 (.akira 확장자 추가)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;297&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Gma2A/dJMcadU9JRk/aFVddapfGiPFh94pUXKfkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Gma2A/dJMcadU9JRk/aFVddapfGiPFh94pUXKfkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Gma2A/dJMcadU9JRk/aFVddapfGiPFh94pUXKfkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGma2A%2FdJMcadU9JRk%2FaFVddapfGiPFh94pUXKfkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1198&quot; height=&quot;297&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;297&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 5. 복호화 기술 분석 (Decryption Strategy)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.1 후킹 기반 키 추출&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;모니터링 대상 API&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;CryptGenRandom :&lt;/b&gt; 키/논스 생성 시점 캡처&lt;/li&gt;
&lt;li&gt;&lt;b&gt;CreateFileW :&lt;/b&gt; 암호화 대상 파일 식별&lt;/li&gt;
&lt;li&gt;&lt;b&gt;WriteFile :&lt;/b&gt; Footer 작성 모니터링&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;5.2 복호화 스크립트 분석&lt;/span&gt; &lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span data-token-index=&quot;2&quot;&gt;복호화 로직&lt;/span&gt; &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770319224975&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 1. State 초기화
state = [
    0x61707865, 0x3320646e, 0x79622d32, 0x6b206574,  # &quot;expand 32-byte k&quot;
    ...key (8 words)...,
    0, 0,  # counter (64-bit)
    ...nonce (2 words)...
]

# 2. 64바이트 블록 단위 복호화
while pos &amp;lt; encrypted_size:
    state[12] = counter_low
    state[13] = counter_high
    keystream = custom_chacha_block_exact(state)
    plaintext = ciphertext &amp;oplus; keystream
    counter += 1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스크립트 기능&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;JSON 파일에서 후킹된 키/논스 자동 추출&lt;/li&gt;
&lt;li&gt;다중 키 쌍 지원 (여러 키로 순차 시도)&lt;/li&gt;
&lt;li&gt;파일 타입 자동 검증 (JPEG, PNG, 텍스트)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.3 복호화 검증&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;자동 파일 타입 검증&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;JPEG :&lt;/b&gt; Magic bytes FF D8&lt;/li&gt;
&lt;li&gt;&lt;b&gt;PNG :&lt;/b&gt; Magic bytes 89 50 4E 47&lt;/li&gt;
&lt;li&gt;&lt;b&gt;텍스트 :&lt;/b&gt; Printable ratio &amp;gt; 80%&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 6. 요약 및 결론 (Conclusion)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.1 기술적 특징&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;암호화 메커니즘&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구성 요소&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;구현&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;키 생성&lt;/td&gt;
&lt;td&gt;CryptGenRandom (32 bytes, 가공 없음)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;논스 생성&lt;/td&gt;
&lt;td&gt;CryptGenRandom (8 bytes, 가공 없음)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;스트림 암호&lt;/td&gt;
&lt;td&gt;ChaCha8 (4 double rounds)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;키 보호&lt;/td&gt;
&lt;td&gt;RSA 공개키 암호화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;암호화 범위&lt;/td&gt;
&lt;td&gt;파일 크기 50% (&amp;le; 2MB)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Footer&lt;/td&gt;
&lt;td&gt;534 bytes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;성능 최적화&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;라운드 수 감소 :&lt;/b&gt; ChaCha20 &amp;rarr; ChaCha8 (속도 2배 향상)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;부분 암호화 :&lt;/b&gt; 파일 절반만 암호화 (I/O 50% 감소)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;가공 없는 키 사용 :&lt;/b&gt; 추가 연산 제거&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.2 보안 약점&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;약점 1: 축소된 라운드&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ChaCha8 (8 quarter rounds)은 표준 ChaCha20 (20 quarter rounds) 대비 보안 강도 감소&lt;/li&gt;
&lt;li&gt;Cryptanalysis 공격 가능성 증가&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;약점 2: 부분 암호화&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 절반이 평문 노출&lt;/li&gt;
&lt;li&gt;문서/이미지 파일의 경우 내용 일부 복원 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;약점 3: 키 보호 의존성&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;암호화 키 자체는 강력하나, RSA 공개키만 의존&lt;/li&gt;
&lt;li&gt;메모리 덤프/API 후킹 시 키 추출 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.3 복호화 가능 조건&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;필수 정보&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;32바이트 ChaCha 키 (가공 전 원본)&lt;/li&gt;
&lt;li&gt;8바이트 논스 (가공 전 원본)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;추출 방법&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;API 후킹: CryptGenRandom 호출 시점 캡처&lt;/li&gt;
&lt;li&gt;메모리 덤프: 암호화 프로세스 메모리 분석 (a1+312, a1+304 오프셋)&lt;/li&gt;
&lt;li&gt;Footer 분석: RSA 개인키 확보 시 복호화 가능&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>랜섬웨어 분석 보고서</category>
      <author>geonwoo9643</author>
      <guid isPermaLink="true">https://mzcompany.tistory.com/13</guid>
      <comments>https://mzcompany.tistory.com/13#entry13comment</comments>
      <pubDate>Fri, 6 Feb 2026 04:28:53 +0900</pubDate>
    </item>
    <item>
      <title>Devman 랜섬웨어 분석 보고서</title>
      <link>https://mzcompany.tistory.com/12</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 1. 개요 (Overview)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.1 분석 배경&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DevMan&lt;/b&gt; 랜섬웨어는 2025년 초부터 활발히 유포되고 있는 악성코드로, ChaCha8 스트림 암호화를 기반으로 한 경량화된 암호화 방식을 채택하고 있습니다. DragonForce 랜섬웨어의 변종으로 추정되며, 유사한 암호화 메커니즘을 사용하지만 더 단순화된 구조를 가지고 있습니다. 본 보고서는 DevMan의 암호학적 구조를 정밀 분석하고, API 후킹을 통한 실시간 키 추출 기법과 복호화 전략을 제시합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.2 핵심 요약&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;경량화된 암호화 구조 :&lt;/b&gt; ChaCha8 스트림 암호화를 사용하여 빠른 암호화 속도를 달성합니다. 4번의 더블 라운드를 수행하여 성능과 보안성의 균형을 추구합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;파일별 독립 키 생성 :&lt;/b&gt; 각 파일마다 고유한 32바이트 키와 8바이트 nonce를 CryptGenRandom API를 통해 생성합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;단순화된 암호화 전략 :&lt;/b&gt; 복잡한 파일 크기별 전략 없이 일관된 암호화 방식을 적용합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;완벽한 복호화 가능성 :&lt;/b&gt; CryptGenRandom API 호출 시점에 생성되는 평문 키를 API 후킹으로 실시간 캡처할 경우, 완벽한 복호화가 가능합니다. 본 분석에서 개발한 복호화 스크립트를 통해 실증적으로 검증되었습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 2. 식별 정보 (Identification)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Malware Family&lt;/b&gt;: DevMan&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Filetype&lt;/b&gt;: PE32 (Windows Executable)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Hash (SHA256)&lt;/b&gt;: df5ab9015833023a03f92a797e20196672c1d6525501a9f9a94a45b0904c7403&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Extension&lt;/b&gt;: .devman&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Target&lt;/b&gt;: Windows 기반 시스템&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 3. 분석 환경 및 도구 (Tools)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;도구명 (Tool)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;용도 (Purpose)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;정적 분석&lt;/td&gt;
&lt;td&gt;IDA Pro&lt;/td&gt;
&lt;td&gt;ChaCha8 구현 루틴 및 암호화 로직 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;동적 분석&lt;/td&gt;
&lt;td&gt;CryptGenRandom API Hooking (x86)&lt;/td&gt;
&lt;td&gt;실시간 키 및 nonce 추출&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;행위 분석&lt;/td&gt;
&lt;td&gt;Process Monitor&lt;/td&gt;
&lt;td&gt;파일 I/O 및 암호화 행위 추적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;검증 도구&lt;/td&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;td&gt;ChaCha8 복호화 스크립트 개발 및 PoC&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 4. 암호화 기술 분석 (Technical Analysis) &lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.1 전체 암호화 워크플로우&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DevMan은 단순화된 암호화 모델을 기반으로 다음과 같은 4단계 프로세스를 거칩니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;키 및 Nonce 생성 :&lt;/b&gt; CryptGenRandom API를 통해 파일별로 고유한 32바이트 ChaCha 키와 8바이트 nonce를 생성&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ChaCha State 초기화 :&lt;/b&gt; 생성된 키와 nonce로 ChaCha state를 초기화하고 카운터를 0으로 설정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;파일 암호화 :&lt;/b&gt; ChaCha8 알고리즘을 사용하여 파일 전체를 암호화&lt;/li&gt;
&lt;li&gt;&lt;b&gt;파일명 변경 :&lt;/b&gt; 암호화된 파일의 확장자를 .devman으로 변경&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.2 키 생성 및 관리 (Key Generation)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.2.1 CryptGenRandom을 통한 난수 생성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DevMan은 Windows CryptoAPI의 CryptGenRandom 함수를 사용하여 암호학적으로 안전한 난수를 생성합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1770275411851&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 각 파일마다 고유한 키와 nonce 생성
CryptGenRandom(hProv, 32, chacha_key);    // 32바이트 ChaCha Key
CryptGenRandom(hProv, 8, chacha_nonce);   // 8바이트 ChaCha Nonce&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.2.2 ChaCha State 초기화&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성된 키와 nonce를 사용하여 ChaCha state를 초기화합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Constant :&lt;/b&gt; &quot;expand 32-byte k&quot; (ChaCha 표준 상수)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Key :&lt;/b&gt; CryptGenRandom으로 생성한 32바이트 난수&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Counter :&lt;/b&gt; 0으로 초기화 (블록마다 1씩 증가)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Nonce :&lt;/b&gt; CryptGenRandom으로 생성한 8바이트 난수&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ChaCha State 구조 (64바이트):&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;Constant (16B)&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;Key (32B)&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;Counter (8B)&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;Nonce (8B)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.3 ChaCha8 암호화 알고리즘&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.3.1 ChaCha8 키스트림 생성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ChaCha8은 일반적인 ChaCha20의 10번 더블 라운드 대신, &lt;b&gt;4번의 더블 라운드&lt;/b&gt;를 수행하여 성능을 최적화한 변형입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1770275650766&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ChaCha8 라운드 구조:
┌─────────────────────────────────┐
│    Initial State (64 bytes)     │
│  [Constant | Key | Ctr | Nonce] │
└─────────────────────────────────┘
            &amp;darr;
    ┌───────────────┐
    │ Double Round  │  &amp;larr; 4번 반복 (ChaCha8)
    │ (QR 함수 8회) │
    └───────────────┘
            &amp;darr;
┌─────────────────────────────────┐
│      Keystream (64 bytes)       │
└─────────────────────────────────┘&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.3.2 Quarter Round 연산&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770275666455&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Quarter Round (a, b, c, d):
    a += b; d ^= a; d &amp;lt;&amp;lt;&amp;lt;= 16;
    c += d; b ^= c; b &amp;lt;&amp;lt;&amp;lt;= 12;
    a += b; d ^= a; d &amp;lt;&amp;lt;&amp;lt;= 8;
    c += d; b ^= c; b &amp;lt;&amp;lt;&amp;lt;= 7;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.3.3 ChaCha8 블록 생성&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770275688609&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def chacha_block(key32, counter, nonce64, rounds=8):
    constants = b&quot;expand 32-byte k&quot;
    key_words = list(struct.unpack(&quot;&amp;lt;8I&quot;, key32))
    nonce_words = list(struct.unpack(&quot;&amp;lt;2I&quot;, nonce64))
    counter_low = counter &amp;amp; 0xffffffff
    counter_high = (counter &amp;gt;&amp;gt; 32) &amp;amp; 0xffffffff
    
    # Initial state 구성
    state = [
        struct.unpack(&quot;&amp;lt;I&quot;, constants[0:4])[0],
        struct.unpack(&quot;&amp;lt;I&quot;, constants[4:8])[0],
        struct.unpack(&quot;&amp;lt;I&quot;, constants[8:12])[0],
        struct.unpack(&quot;&amp;lt;I&quot;, constants[12:16])[0],
    ] + key_words + [counter_low, counter_high] + nonce_words
    
    working = state.copy()
    
    # 4번의 더블 라운드
    for _ in range(rounds // 2):
        # Column round
        quarter_round(working, 0, 4, 8, 12)
        quarter_round(working, 1, 5, 9, 13)
        quarter_round(working, 2, 6, 10, 14)
        quarter_round(working, 3, 7, 11, 15)
        
        # Diagonal round
        quarter_round(working, 0, 5, 10, 15)
        quarter_round(working, 1, 6, 11, 12)
        quarter_round(working, 2, 7, 8, 13)
        quarter_round(working, 3, 4, 9, 14)
    
    # Add initial state
    out = [(working[i] + state[i]) &amp;amp; 0xffffffff for i in range(16)]
    return struct.pack(&quot;&amp;lt;16I&quot;, *out)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.3.4 XOR 암호화 및 카운터 증가&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770275704406&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 생성된 키스트림과 평문을 XOR
for i in range(block_size):
    ciphertext[i] = plaintext[i] ^ keystream[i]

# 블록마다 카운터 증가
counter++&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.4 파일 처리 아키텍처&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DevMan의 파일 암호화 프로세스는 다음과 같습니다:&lt;/p&gt;
&lt;pre id=&quot;code_1770275722091&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[파일 처리 과정]
1. 파일 열기 및 읽기
   &amp;darr;
2. CryptGenRandom 호출
   - 32바이트 ChaCha 키 생성
   - 8바이트 nonce 생성
   &amp;darr;
3. ChaCha State 초기화
   - Constant: &quot;expand 32-byte k&quot;
   - Key: 생성된 32바이트
   - Counter: 0
   - Nonce: 생성된 8바이트
   &amp;darr;
4. ChaCha8 블록 암호화
   - 4번의 더블 라운드
   - 키스트림 생성
   - XOR 연산
   &amp;darr;
5. 암호화된 데이터 쓰기
   &amp;darr;
6. 파일명 변경
   원본.확장자 &amp;rarr; 원본.확장자.devman&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.5 정적 분석&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CSP 초기화&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RSA-4096 공개키 임포트&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1092&quot; data-origin-height=&quot;37&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oBlu2/dJMcaiIVVQX/gB0KUbLwhCxjXrZscogR6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oBlu2/dJMcaiIVVQX/gB0KUbLwhCxjXrZscogR6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oBlu2/dJMcaiIVVQX/gB0KUbLwhCxjXrZscogR6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoBlu2%2FdJMcaiIVVQX%2FgB0KUbLwhCxjXrZscogR6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1092&quot; height=&quot;37&quot; data-origin-width=&quot;1092&quot; data-origin-height=&quot;37&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;pbData (RSA1 시그니처)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;915&quot; data-origin-height=&quot;257&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/djEpCD/dJMcaiIVVQ9/DTfDm8uaAypfYW9F9qxGYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/djEpCD/dJMcaiIVVQ9/DTfDm8uaAypfYW9F9qxGYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/djEpCD/dJMcaiIVVQ9/DTfDm8uaAypfYW9F9qxGYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdjEpCD%2FdJMcaiIVVQ9%2FDTfDm8uaAypfYW9F9qxGYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;915&quot; height=&quot;257&quot; data-origin-width=&quot;915&quot; data-origin-height=&quot;257&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;5MB 작업 버퍼 할당&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;16&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xsi3w/dJMcacWgXFk/O4Dl3izE0Fiuq0H0g1DLt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xsi3w/dJMcacWgXFk/O4Dl3izE0Fiuq0H0g1DLt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xsi3w/dJMcacWgXFk/O4Dl3izE0Fiuq0H0g1DLt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxsi3w%2FdJMcacWgXFk%2FO4Dl3izE0Fiuq0H0g1DLt1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1022&quot; height=&quot;16&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;16&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;크리티컬 섹션 동기화 (5초 대기)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1137&quot; data-origin-height=&quot;598&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkSE1C/dJMb99L0zu2/MfUfxPIxsHJaDQlQYkrYK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkSE1C/dJMb99L0zu2/MfUfxPIxsHJaDQlQYkrYK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkSE1C/dJMb99L0zu2/MfUfxPIxsHJaDQlQYkrYK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkSE1C%2FdJMb99L0zu2%2FMfUfxPIxsHJaDQlQYkrYK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1137&quot; height=&quot;598&quot; data-origin-width=&quot;1137&quot; data-origin-height=&quot;598&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CSP(암호화 컨텍스트) 획득 시도&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1107&quot; data-origin-height=&quot;57&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bl1mtr/dJMcahwxREP/JDATGTA4uWf7XS5WsvhJpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bl1mtr/dJMcahwxREP/JDATGTA4uWf7XS5WsvhJpK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bl1mtr/dJMcahwxREP/JDATGTA4uWf7XS5WsvhJpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbl1mtr%2FdJMcahwxREP%2FJDATGTA4uWf7XS5WsvhJpK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1107&quot; height=&quot;57&quot; data-origin-width=&quot;1107&quot; data-origin-height=&quot;57&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1213&quot; data-origin-height=&quot;61&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTQffu/dJMcachGX0I/d4b0tP3klqJNOvfDsfjSIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTQffu/dJMcachGX0I/d4b0tP3klqJNOvfDsfjSIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTQffu/dJMcachGX0I/d4b0tP3klqJNOvfDsfjSIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTQffu%2FdJMcachGX0I%2Fd4b0tP3klqJNOvfDsfjSIk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1213&quot; height=&quot;61&quot; data-origin-width=&quot;1213&quot; data-origin-height=&quot;61&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1211&quot; data-origin-height=&quot;57&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMOA5T/dJMcacBZB6l/Y5GP9wD1FlIKeGw2mKupcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMOA5T/dJMcacBZB6l/Y5GP9wD1FlIKeGw2mKupcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMOA5T/dJMcacBZB6l/Y5GP9wD1FlIKeGw2mKupcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMOA5T%2FdJMcacBZB6l%2FY5GP9wD1FlIKeGw2mKupcK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1211&quot; height=&quot;57&quot; data-origin-width=&quot;1211&quot; data-origin-height=&quot;57&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1370&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u7pr3/dJMcadAPF6d/kVGDBpQdk363dMkhKuyukk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u7pr3/dJMcadAPF6d/kVGDBpQdk363dMkhKuyukk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u7pr3/dJMcadAPF6d/kVGDBpQdk363dMkhKuyukk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu7pr3%2FdJMcadAPF6d%2FkVGDBpQdk363dMkhKuyukk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1370&quot; height=&quot;18&quot; data-origin-width=&quot;1370&quot; data-origin-height=&quot;18&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;디렉터리 스캔&lt;/span&gt; &lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 검색&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1018&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bE4B4n/dJMcaaRJyJW/YFSogrCQhqtjQDcr4kl7M0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bE4B4n/dJMcaaRJyJW/YFSogrCQhqtjQDcr4kl7M0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bE4B4n/dJMcaaRJyJW/YFSogrCQhqtjQDcr4kl7M0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbE4B4n%2FdJMcaaRJyJW%2FYFSogrCQhqtjQDcr4kl7M0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1018&quot; height=&quot;20&quot; data-origin-width=&quot;1018&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;디렉터리 건너뛰기 (&amp;rdquo;.&amp;rdquo;, &amp;ldquo;..&amp;rdquo;, 리파스 포인트)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1353&quot; data-origin-height=&quot;157&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFSt0n/dJMcah4m2Nx/Jvd9xlYiVyKDmQnO3JLFU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFSt0n/dJMcah4m2Nx/Jvd9xlYiVyKDmQnO3JLFU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFSt0n/dJMcah4m2Nx/Jvd9xlYiVyKDmQnO3JLFU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFSt0n%2FdJMcah4m2Nx%2FJvd9xlYiVyKDmQnO3JLFU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1353&quot; height=&quot;157&quot; data-origin-width=&quot;1353&quot; data-origin-height=&quot;157&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;디렉터리 화이트/블랙리스트 체크 (목록 난독화 &amp;rarr; 런타임 시, 복호화)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1021&quot; data-origin-height=&quot;36&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkM1jR/dJMcaf6x1xh/lmDnpoqqm94yQ9twSDew90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkM1jR/dJMcaf6x1xh/lmDnpoqqm94yQ9twSDew90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkM1jR/dJMcaf6x1xh/lmDnpoqqm94yQ9twSDew90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkM1jR%2FdJMcaf6x1xh%2FlmDnpoqqm94yQ9twSDew90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1021&quot; height=&quot;36&quot; data-origin-width=&quot;1021&quot; data-origin-height=&quot;36&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 확장자 화이트/블랙리스트 체크 (목록 난독화 &amp;rarr; 런타임 시, 복호화)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;37&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9Zv9g/dJMcadt4MyI/qLPkJgLk0y6XgdVQua5Nd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9Zv9g/dJMcadt4MyI/qLPkJgLk0y6XgdVQua5Nd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9Zv9g/dJMcadt4MyI/qLPkJgLk0y6XgdVQua5Nd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9Zv9g%2FdJMcadt4MyI%2FqLPkJgLk0y6XgdVQua5Nd1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1022&quot; height=&quot;37&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;37&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;암호화 전략 선택&lt;/span&gt; &lt;/b&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1.&lt;/b&gt; &lt;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;ChaCha8 키 생성 + RSA 메타데이터 생성&lt;/span&gt; &lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ChaCha 키 생성 (32바이트)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1018&quot; data-origin-height=&quot;37&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPlAFS/dJMcagLaFD8/KvxNEEFuXfXsr8hPNzkgRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPlAFS/dJMcagLaFD8/KvxNEEFuXfXsr8hPNzkgRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPlAFS/dJMcagLaFD8/KvxNEEFuXfXsr8hPNzkgRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPlAFS%2FdJMcagLaFD8%2FKvxNEEFuXfXsr8hPNzkgRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1018&quot; height=&quot;37&quot; data-origin-width=&quot;1018&quot; data-origin-height=&quot;37&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Nonce 생성 (8바이트)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;36&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wx3PR/dJMcad1UDWg/Cs1RRkjyYCt8CObZhZIArk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wx3PR/dJMcad1UDWg/Cs1RRkjyYCt8CObZhZIArk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wx3PR/dJMcad1UDWg/Cs1RRkjyYCt8CObZhZIArk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwx3PR%2FdJMcad1UDWg%2FCs1RRkjyYCt8CObZhZIArk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;956&quot; height=&quot;36&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;36&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ChaCha 상수 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcyr5b/dJMcafFtUT1/dCBfRckTzUKlYdEe4naYtK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcyr5b/dJMcafFtUT1/dCBfRckTzUKlYdEe4naYtK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcyr5b/dJMcafFtUT1/dCBfRckTzUKlYdEe4naYtK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbcyr5b%2FdJMcafFtUT1%2FdCBfRckTzUKlYdEe4naYtK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;972&quot; height=&quot;18&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;18&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;카운터 초기화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1005&quot; data-origin-height=&quot;15&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccxWQM/dJMcahXBzG0/wdF3NrA8hVejs9GaIXUx81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccxWQM/dJMcahXBzG0/wdF3NrA8hVejs9GaIXUx81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccxWQM/dJMcahXBzG0/wdF3NrA8hVejs9GaIXUx81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccxWQM%2FdJMcahXBzG0%2FwdF3NrA8hVejs9GaIXUx81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1005&quot; height=&quot;15&quot; data-origin-width=&quot;1005&quot; data-origin-height=&quot;15&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일명 메타데이터 저장&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;937&quot; data-origin-height=&quot;41&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvAXJ3/dJMcadU9zX7/oAKGssrnfywhDW87qQ1w2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvAXJ3/dJMcadU9zX7/oAKGssrnfywhDW87qQ1w2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvAXJ3/dJMcadU9zX7/oAKGssrnfywhDW87qQ1w2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvAXJ3%2FdJMcadU9zX7%2FoAKGssrnfywhDW87qQ1w2K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;937&quot; height=&quot;41&quot; data-origin-width=&quot;937&quot; data-origin-height=&quot;41&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RSA 공개키로 메타데이터 암호화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1225&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btynfc/dJMcacvfdek/kKcM2RIqpTFVzbDB6j7Jj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btynfc/dJMcacvfdek/kKcM2RIqpTFVzbDB6j7Jj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btynfc/dJMcacvfdek/kKcM2RIqpTFVzbDB6j7Jj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbtynfc%2FdJMcacvfdek%2FkKcM2RIqpTFVzbDB6j7Jj1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1225&quot; height=&quot;17&quot; data-origin-width=&quot;1225&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;2. 파일 열기&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;97&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t62uo/dJMcaaRJyLe/85PEggAr1f9OPyISMsrIdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t62uo/dJMcaaRJyLe/85PEggAr1f9OPyISMsrIdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t62uo/dJMcaaRJyLe/85PEggAr1f9OPyISMsrIdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft62uo%2FdJMcaaRJyLe%2F85PEggAr1f9OPyISMsrIdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1095&quot; height=&quot;97&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;97&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;3. 시스템 파일 제외 (목록은 난독화 &amp;rarr; 런타임 복호화)&lt;/span&gt; &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;40&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBLZ7q/dJMcadgArjy/ZEaarvKTaBNppxkUY9G5k0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBLZ7q/dJMcadgArjy/ZEaarvKTaBNppxkUY9G5k0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBLZ7q/dJMcadgArjy/ZEaarvKTaBNppxkUY9G5k0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBLZ7q%2FdJMcadgArjy%2FZEaarvKTaBNppxkUY9G5k0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1010&quot; height=&quot;40&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;40&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;4. &lt;span data-token-index=&quot;0&quot;&gt;파일 크기 읽기 및 암호화 전략 선택 시작&lt;/span&gt; &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1025&quot; data-origin-height=&quot;141&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cASC37/dJMcajujm5z/ufTS0wKqSUMRIKs02uyho1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cASC37/dJMcajujm5z/ufTS0wKqSUMRIKs02uyho1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cASC37/dJMcajujm5z/ufTS0wKqSUMRIKs02uyho1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcASC37%2FdJMcajujm5z%2FufTS0wKqSUMRIKs02uyho1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1025&quot; height=&quot;141&quot; data-origin-width=&quot;1025&quot; data-origin-height=&quot;141&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1228&quot; data-origin-height=&quot;37&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwLP1J/dJMcajujm52/GZkpt1G4bfrMdoQgJKi6mk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwLP1J/dJMcajujm52/GZkpt1G4bfrMdoQgJKi6mk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwLP1J/dJMcajujm52/GZkpt1G4bfrMdoQgJKi6mk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwLP1J%2FdJMcajujm52%2FGZkpt1G4bfrMdoQgJKi6mk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1228&quot; height=&quot;37&quot; data-origin-width=&quot;1228&quot; data-origin-height=&quot;37&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1161&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/I8OuS/dJMcajujm59/IFGY9ovSgOjEzlYCtjOvIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/I8OuS/dJMcajujm59/IFGY9ovSgOjEzlYCtjOvIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/I8OuS/dJMcajujm59/IFGY9ovSgOjEzlYCtjOvIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FI8OuS%2FdJMcajujm59%2FIFGY9ovSgOjEzlYCtjOvIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1161&quot; height=&quot;21&quot; data-origin-width=&quot;1161&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;58&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vV8oy/dJMcajujm6h/6Dj9V2x65jRapQJj4u7pkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vV8oy/dJMcajujm6h/6Dj9V2x65jRapQJj4u7pkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vV8oy/dJMcajujm6h/6Dj9V2x65jRapQJj4u7pkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvV8oy%2FdJMcajujm6h%2F6Dj9V2x65jRapQJj4u7pkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1017&quot; height=&quot;58&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;58&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전체 파일 암호화 (작은 파일, 특수 파일(.dll/.exe))&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1283&quot; data-origin-height=&quot;415&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cSvb0k/dJMcacPxhUa/iwPYTDbxDInZBFysjdMqjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cSvb0k/dJMcacPxhUa/iwPYTDbxDInZBFysjdMqjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cSvb0k/dJMcacPxhUa/iwPYTDbxDInZBFysjdMqjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcSvb0k%2FdJMcacPxhUa%2FiwPYTDbxDInZBFysjdMqjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1283&quot; height=&quot;415&quot; data-origin-width=&quot;1283&quot; data-origin-height=&quot;415&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;부분 암호화 (중간 파일)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1175&quot; data-origin-height=&quot;538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cSx8S9/dJMcafla3AL/GwuKmTkxucJJb8nvBuz98K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cSx8S9/dJMcafla3AL/GwuKmTkxucJJb8nvBuz98K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cSx8S9/dJMcafla3AL/GwuKmTkxucJJb8nvBuz98K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcSx8S9%2FdJMcafla3AL%2FGwuKmTkxucJJb8nvBuz98K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1175&quot; height=&quot;538&quot; data-origin-width=&quot;1175&quot; data-origin-height=&quot;538&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Stride 암호화 (큰 파일)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1037&quot; data-origin-height=&quot;460&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKkedb/dJMcaferDd9/v44P2uvRFti7S4FLF36zR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKkedb/dJMcaferDd9/v44P2uvRFti7S4FLF36zR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKkedb/dJMcaferDd9/v44P2uvRFti7S4FLF36zR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKkedb%2FdJMcaferDd9%2Fv44P2uvRFti7S4FLF36zR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1037&quot; height=&quot;460&quot; data-origin-width=&quot;1037&quot; data-origin-height=&quot;460&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1356&quot; data-origin-height=&quot;337&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xJvhF/dJMcacWgXJN/Kgks6B8i4vEJQGbuINlhck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xJvhF/dJMcacWgXJN/Kgks6B8i4vEJQGbuINlhck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xJvhF/dJMcacWgXJN/Kgks6B8i4vEJQGbuINlhck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxJvhF%2FdJMcacWgXJN%2FKgks6B8i4vEJQGbuINlhck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1356&quot; height=&quot;337&quot; data-origin-width=&quot;1356&quot; data-origin-height=&quot;337&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;암호화된 데이터 쓰기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1157&quot; data-origin-height=&quot;517&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wtbCF/dJMb99ZASpk/x3KmvUXbIuP0y9DgiekElk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wtbCF/dJMb99ZASpk/x3KmvUXbIuP0y9DgiekElk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wtbCF/dJMb99ZASpk/x3KmvUXbIuP0y9DgiekElk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwtbCF%2FdJMb99ZASpk%2Fx3KmvUXbIuP0y9DgiekElk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1157&quot; height=&quot;517&quot; data-origin-width=&quot;1157&quot; data-origin-height=&quot;517&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;5. 파일명 &lt;span data-token-index=&quot;0&quot;&gt; 변경 (.infected 확장자 추가)&lt;/span&gt; &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1031&quot; data-origin-height=&quot;180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rN8xi/dJMcaia9uew/CnJE3TRBlHssrQKOog95rK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rN8xi/dJMcaia9uew/CnJE3TRBlHssrQKOog95rK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rN8xi/dJMcaia9uew/CnJE3TRBlHssrQKOog95rK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrN8xi%2FdJMcaia9uew%2FCnJE3TRBlHssrQKOog95rK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1031&quot; height=&quot;180&quot; data-origin-width=&quot;1031&quot; data-origin-height=&quot;180&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1092&quot; data-origin-height=&quot;557&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t4u4K/dJMcaioGlQQ/wnJVV3h0NuuIFD4BL8gek0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t4u4K/dJMcaioGlQQ/wnJVV3h0NuuIFD4BL8gek0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t4u4K/dJMcaioGlQQ/wnJVV3h0NuuIFD4BL8gek0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft4u4K%2FdJMcaioGlQQ%2FwnJVV3h0NuuIFD4BL8gek0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1092&quot; height=&quot;557&quot; data-origin-width=&quot;1092&quot; data-origin-height=&quot;557&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;6. 키/IV 초기화&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;195&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YiKbl/dJMcahQPEoz/KXBmROP9y7Bu2uvStOmwwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YiKbl/dJMcahQPEoz/KXBmROP9y7Bu2uvStOmwwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YiKbl/dJMcahQPEoz/KXBmROP9y7Bu2uvStOmwwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYiKbl%2FdJMcahQPEoz%2FKXBmROP9y7Bu2uvStOmwwk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1095&quot; height=&quot;195&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;195&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;파일 암호화 (ChaCha8 + RSA 메타데이터)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ChaCha8 상태 초기화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;96&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Kx0hn/dJMcaia9ueV/NU6LFhuNqS1NHrGGV8YLK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Kx0hn/dJMcaia9ueV/NU6LFhuNqS1NHrGGV8YLK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Kx0hn/dJMcaia9ueV/NU6LFhuNqS1NHrGGV8YLK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKx0hn%2FdJMcaia9ueV%2FNU6LFhuNqS1NHrGGV8YLK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1027&quot; height=&quot;96&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;96&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ChaCha8 암호화 (4회 반복)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1021&quot; data-origin-height=&quot;277&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3Y9e5/dJMcah4m2Xd/dqh8ktmyMox4ZxstGZ4JSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3Y9e5/dJMcah4m2Xd/dqh8ktmyMox4ZxstGZ4JSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3Y9e5/dJMcah4m2Xd/dqh8ktmyMox4ZxstGZ4JSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3Y9e5%2FdJMcah4m2Xd%2Fdqh8ktmyMox4ZxstGZ4JSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1021&quot; height=&quot;277&quot; data-origin-width=&quot;1021&quot; data-origin-height=&quot;277&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;카운터 증가 (64바이트 블록 단위)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cd3LOj/dJMcabJSalV/KKJHVcYuuCeoZT743NkCyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cd3LOj/dJMcabJSalV/KKJHVcYuuCeoZT743NkCyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cd3LOj/dJMcabJSalV/KKJHVcYuuCeoZT743NkCyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcd3LOj%2FdJMcabJSalV%2FKKJHVcYuuCeoZT743NkCyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1022&quot; height=&quot;20&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;암호화된 데이터 쓰기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1007&quot; data-origin-height=&quot;15&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ogi1I/dJMcafS1nS4/dPdF6gY5IZoMRzsJE9T5pk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ogi1I/dJMcafS1nS4/dPdF6gY5IZoMRzsJE9T5pk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ogi1I/dJMcafS1nS4/dPdF6gY5IZoMRzsJE9T5pk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fogi1I%2FdJMcafS1nS4%2FdPdF6gY5IZoMRzsJE9T5pk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1007&quot; height=&quot;15&quot; data-origin-width=&quot;1007&quot; data-origin-height=&quot;15&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;5. 복호화 기술 분석 (Decryption Strategy)&lt;/span&gt; &lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.1 복호화 가능성 분석&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DevMan 랜섬웨어는 다음과 같은 특성으로 인해 &lt;b&gt;완벽한 복호화가 가능&lt;/b&gt;합니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;키 생성 시점 취약점 :&lt;/b&gt; CryptGenRandom API 호출 시 생성되는 평문 키를 API 후킹으로 실시간 캡처 가능&lt;/li&gt;
&lt;li&gt;&lt;b&gt;메모리 덤프 가능성 :&lt;/b&gt; 암호화 진행 중 프로세스 메모리에 평문 키가 존재&lt;/li&gt;
&lt;li&gt;&lt;b&gt;파일별 독립 암호화 :&lt;/b&gt; 각 파일마다 별도의 키를 사용하므로, 해당 키만 있으면 개별 파일 복호화 가능&lt;/li&gt;
&lt;li&gt;&lt;b&gt;단순한 암호화 구조 :&lt;/b&gt; 추가적인 메타데이터나 RSA 암호화 없이 ChaCha8만 사용&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.2 ChaCha8 키 복구 메커니즘&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DevMan의 암호학적 약점은 &lt;b&gt;CryptGenRandom API 호출 시점에 생성되는 32바이트 키와 8바이트 nonce&lt;/b&gt;가 평문으로 메모리에 존재한다는 점입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1770275886672&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[취약점 구조]
CryptGenRandom API 호출
         &amp;darr;
   평문 키 생성 (32B)
         &amp;darr;
  ★ API 후킹 지점 ★  &amp;larr; 키 캡처 가능!
         &amp;darr;
  ChaCha State 초기화
         &amp;darr;
   파일 암호화 수행&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.3 ChaCha8 복호화 스크립트 개발&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캡처한 키 정보를 활용하여 Python 기반 ChaCha8 복호화 스크립트를 개발했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스크립트 주요 기능:&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;API 후킹 로그 파일 파싱 (키/nonce 추출)&lt;/li&gt;
&lt;li&gt;ChaCha8 state 초기화 및 키스트림 생성&lt;/li&gt;
&lt;li&gt;XOR 연산을 통한 복호화 수행&lt;/li&gt;
&lt;li&gt;파일 시그니처 검증 (매직 넘버)&lt;/li&gt;
&lt;li&gt;원본 파일 복원 및 저장&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심 복호화 로직:&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770275911020&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 파일 시그니처 정의
COMMON_SIGNATURES = {
    b&quot;%PDF-&quot;: &quot;pdf&quot;,
    b&quot;\x89PNG\r\n\x1a\n&quot;: &quot;png&quot;,
    b&quot;PK\x03\x04&quot;: &quot;zip&quot;,
    b&quot;MZ&quot;: &quot;exe&quot;,
    b&quot;\xff\xd8\xff&quot;: &quot;jpg&quot;,
}

def rotl32(v, n):
    &quot;&quot;&quot;32비트 좌측 순환 시프트&quot;&quot;&quot;
    return ((v &amp;lt;&amp;lt; n) &amp;amp; 0xffffffff) | (v &amp;gt;&amp;gt; (32 - n))

def quarter_round(s, a, b, c, d):
    &quot;&quot;&quot;ChaCha Quarter Round 연산&quot;&quot;&quot;
    s[a] = (s[a] + s[b]) &amp;amp; 0xffffffff
    s[d] ^= s[a]; s[d] = rotl32(s[d], 16)
    s[c] = (s[c] + s[d]) &amp;amp; 0xffffffff
    s[b] ^= s[c]; s[b] = rotl32(s[b], 12)
    s[a] = (s[a] + s[b]) &amp;amp; 0xffffffff
    s[d] ^= s[a]; s[d] = rotl32(s[d], 8)
    s[c] = (s[c] + s[d]) &amp;amp; 0xffffffff
    s[b] ^= s[c]; s[b] = rotl32(s[b], 7)

def chacha_block(key32, counter, nonce64, rounds=8):
    &quot;&quot;&quot;ChaCha8 블록 생성&quot;&quot;&quot;
    constants = b&quot;expand 32-byte k&quot;
    key_words = list(struct.unpack(&quot;&amp;lt;8I&quot;, key32))
    nonce_words = list(struct.unpack(&quot;&amp;lt;2I&quot;, nonce64))
    
    # State 초기화
    state = [
        struct.unpack(&quot;&amp;lt;I&quot;, constants[i:i+4])[0] 
        for i in range(0, 16, 4)
    ] + key_words + [counter &amp;amp; 0xffffffff, 
                      (counter &amp;gt;&amp;gt; 32) &amp;amp; 0xffffffff] + nonce_words
    
    working = state.copy()
    
    # 4번의 더블 라운드
    for _ in range(rounds // 2):
        # Column rounds
        quarter_round(working, 0, 4, 8, 12)
        quarter_round(working, 1, 5, 9, 13)
        quarter_round(working, 2, 6, 10, 14)
        quarter_round(working, 3, 7, 11, 15)
        # Diagonal rounds
        quarter_round(working, 0, 5, 10, 15)
        quarter_round(working, 1, 6, 11, 12)
        quarter_round(working, 2, 7, 8, 13)
        quarter_round(working, 3, 4, 9, 14)
    
    out = [(working[i] + state[i]) &amp;amp; 0xffffffff for i in range(16)]
    return struct.pack(&quot;&amp;lt;16I&quot;, *out)

def chacha_keystream(key32, nonce64, rounds, length):
    &quot;&quot;&quot;키스트림 생성&quot;&quot;&quot;
    ks = bytearray()
    ctr = 0
    while len(ks) &amp;lt; length:
        ks.extend(chacha_block(key32, ctr, nonce64, rounds))
        ctr += 1
    return bytes(ks[:length])

def parse_hook_log(path):
    &quot;&quot;&quot;로그 파일에서 키-nonce 쌍 추출&quot;&quot;&quot;
    text = Path(path).read_text(errors=&quot;ignore&quot;)
    pairs = []
    current_key = None
    
    for line in text.split('\n'):
        if 'Data: ' in line:
            match = re.search(r'Data:\s+([0-9a-fA-F]+)', line)
            if match:
                data_hex = match.group(1).lower()
                if len(data_hex) == 64:  # 32바이트 키
                    current_key = data_hex
                elif len(data_hex) == 16 and current_key:  # 8바이트 nonce
                    pairs.append((current_key, data_hex))
                    current_key = None
    return pairs

def decrypt_file(encrypted_file, key_hex, nonce_hex, output_file):
    &quot;&quot;&quot;파일 복호화&quot;&quot;&quot;
    # 키와 nonce를 바이너리로 변환
    key = unhexlify(key_hex)
    nonce = unhexlify(nonce_hex)
    
    # 암호화된 데이터 읽기
    ciphertext = Path(encrypted_file).read_bytes()
    
    # 키스트림 생성 (ChaCha8, 8라운드)
    keystream = chacha_keystream(key, nonce, rounds=8, length=len(ciphertext))
    
    # XOR 복호화
    plaintext = bytes(a ^ b for a, b in zip(ciphertext, keystream))&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.4 무결성 검증&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복구된 파일의 유효성을 판단하기 위해 파일 헤더 시그니처(매직 넘버)를 검증합니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;파일 유형&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;매직 넘버 (Hex)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JPG&lt;/td&gt;
&lt;td&gt;FF D8 FF&lt;/td&gt;
&lt;td&gt;JPEG 이미지 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PNG&lt;/td&gt;
&lt;td&gt;89 50 4E 47 0D 0A 1A 0A&lt;/td&gt;
&lt;td&gt;PNG 이미지 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PDF&lt;/td&gt;
&lt;td&gt;25 50 44 46&lt;/td&gt;
&lt;td&gt;PDF 문서 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EXE/DLL&lt;/td&gt;
&lt;td&gt;4D 5A (MZ)&lt;/td&gt;
&lt;td&gt;Windows 실행 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ZIP/DOCX&lt;/td&gt;
&lt;td&gt;50 4B 03 04&lt;/td&gt;
&lt;td&gt;압축 파일 및 MS Office&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ELF&lt;/td&gt;
&lt;td&gt;7F 45 4C 46&lt;/td&gt;
&lt;td&gt;Linux 실행 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 6. 요약 및 결론 (Conclusion)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.1 최종 평가&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DevMan 랜섬웨어는 ChaCha8 스트림 암호화를 사용하는 경량화된 악성코드입니다. DragonForce의 변종으로 추정되지만, RSA 하이브리드 방식이나 복잡한 메타데이터 저장 없이 &lt;b&gt;단순화된 암호화 구조&lt;/b&gt;를 가지고 있습니다. 그러나 &lt;b&gt;키 생성 과정에서 CryptGenRandom API를 직접 호출하는 구조적 취약점&lt;/b&gt;으로 인해, API 후킹을 통한 실시간 키 캡처가 가능하며, 이를 활용한 완벽한 복호화가 실증되었습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1770276126753&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[취약점 요약]
CryptGenRandom API 호출
         &amp;darr;
   평문 키 생성 (32B + 8B)
         &amp;darr;
  ★ API 후킹 지점 ★  &amp;larr; 키 캡처 가능!
         &amp;darr;
  ChaCha State 초기화
         &amp;darr;
   파일 암호화 수행
         &amp;darr;
  .devman 확장자 추가&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.2 대응 가이드&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;6.2.1 예방적 조치&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;API 모니터링 강화&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CryptGenRandom, BCryptGenRandom 등 암호화 API 호출을 실시간 모니터링하는 EDR 솔루션 배치&lt;/li&gt;
&lt;li&gt;의심스러운 대량의 난수 생성 패턴 탐지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;행위 기반 탐지&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대량 파일 접근 패턴 탐지&lt;/li&gt;
&lt;li&gt;.devman 확장자 추가 행위 차단&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;파일 시스템 보호&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실시간 백업 시스템 구축 (VSS, 증분 백업)&lt;/li&gt;
&lt;li&gt;중요 디렉터리에 대한 접근 제어 강화&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;6.2.2 사후 대응&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;초동 조치&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;감염 발견 즉시 시스템 격리 (네트워크 차단)&lt;/li&gt;
&lt;li&gt;시스템을 종료하지 말고 &lt;b&gt;메모리 덤프(Full Memory Dump)&lt;/b&gt; 수행&lt;/li&gt;
&lt;li&gt;프로세스 메모리에서 CryptGenRandom 생성 키 추출 시도&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;키 복구 시도&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;API 후킹 도구(Frida, Detours 등)를 사용하여 CryptGenRandom 호출 로그 확보&lt;/li&gt;
&lt;li&gt;메모리 포렌식을 통한 평문 키 탐색&lt;/li&gt;
&lt;li&gt;로그 파일 또는 메모리 덤프에서 32바이트 키 패턴 추출&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;복호화 수행&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;본 보고서에서 제공하는 ChaCha8 복호화 스크립트 활용&lt;/li&gt;
&lt;li&gt;추출한 키/nonce로 암호화된 파일 복원&lt;/li&gt;
&lt;li&gt;매직 넘버 검증을 통한 복호화 성공 여부 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.3 기술적 특징 요약&lt;/b&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 144px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;height: 18px;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 18px;&quot;&gt;&lt;b&gt;세부 내용&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;암호화 알고리즘&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;ChaCha8 (4번의 더블 라운드)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;키 관리&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;파일별 독립 32바이트 키 + 8바이트 nonce&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;암호화 전략&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;단순 전체 파일 암호화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;메타데이터&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;없음 (키 정보 별도 저장 안함)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;확장자&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;.devman&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;복호화 가능성&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;API 후킹 또는 메모리 덤프로 키 확보 시 100% 복구 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.4 결론&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DevMan 랜섬웨어는 ChaCha8을 사용하는 단순화된 암호화 구조를 가진 악성코드입니다. RSA 하이브리드 방식이나 복잡한 메타데이터 없이 &lt;b&gt;순수 ChaCha8만 사용&lt;/b&gt;하여 빠른 암호화 속도를 달성하지만, 이는 동시에 &lt;b&gt;복호화를 더 쉽게 만드는 요인&lt;/b&gt;이 됩니다. API 후킹을 통해 평문 키를 확보할 경우 &lt;b&gt;즉시 복호화가 가능&lt;/b&gt;하며, 본 분석에서 개발된 복호화 도구는 DevMan 감염 피해 복구에 직접 활용될 수 있습니다. 향후 랜섬웨어 대응을 위해서는 &lt;b&gt;암호화 API 모니터링 강화&lt;/b&gt;와 &lt;b&gt;실시간 메모리 포렌식 체계 구축&lt;/b&gt;이 필수적입니다.&lt;/p&gt;</description>
      <category>랜섬웨어 분석 보고서</category>
      <author>geonwoo9643</author>
      <guid isPermaLink="true">https://mzcompany.tistory.com/12</guid>
      <comments>https://mzcompany.tistory.com/12#entry12comment</comments>
      <pubDate>Thu, 5 Feb 2026 18:27:51 +0900</pubDate>
    </item>
    <item>
      <title>DragonForce 랜섬웨어 분석 보고서</title>
      <link>https://mzcompany.tistory.com/11</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 1. 개요 (Overview) &lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.1 분석 배경&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DragonForce&lt;/b&gt; 랜섬웨어는 2025년 초부터 활발히 유포되고 있는 악성코드로, ChaCha8 스트림 암호화와 RSA 공개키 암호화를 결합한 하이브리드 암호화 방식을 채택하고 있습니다. 특히 멀티스레드 기반의 고속 암호화 엔진을 탑재하여 대량의 파일을 신속하게 암호화하며, 파일 크기와 타입에 따라 차별화된 암호화 전략을 적용합니다. 본 보고서는 DragonForce의 암호학적 구조를 정밀 분석하고, API 후킹을 통한 실시간 키 추출 기법과 복호화 전략을 제시합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.2 핵심 요약&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;고성능 멀티스레드 아키텍처 :&lt;/b&gt; CreateThread API를 반복 호출하여 다수의 워커 스레드를 생성하고, 병렬 처리를 통해 암호화 속도를 극대화합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ChaCha8 스트림 암호화 :&lt;/b&gt; 4번의 더블 라운드를 수행하는 경량화된 ChaCha8 알고리즘을 사용하여, 성능과 보안성의 균형을 추구합니다. 각 파일마다 고유한 32바이트 키와 8바이트 nonce를 생성합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;차별화된 암호화 전략 :&lt;/b&gt; 파일 크기와 타입에 따라 전체 파일 암호화, 선택적 청크 암호화, 헤더만 암호화 등 세 가지 방식을 선택적으로 적용합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;완벽한 복호화 가능성 :&lt;/b&gt; CryptGenRandom API 호출 시점에 생성되는 평문 키를 API 후킹으로 실시간 캡처할 경우, RSA 개인키 없이도 완벽한 복호화가 가능합니다. 본 분석에서 개발한 복호화 스크립트를 통해 실증적으로 검증되었습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 2. 식별 정보 (Identification) &lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Malware Family&lt;/b&gt;: DragonForce&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Filetype&lt;/b&gt;: PE32 (Windows Executable)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Hash (SHA256)&lt;/b&gt;: c844d02c91d5e6dc293de80085ad2f69b5c44bc46ec9fdaa4e3efbda062c871c&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Extension&lt;/b&gt;: .dragonforce_encrypted&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Target&lt;/b&gt;: Windows 기반 시스템&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 3. 분석 환경 및 도구 (Tools) &lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;도구명 (Tool)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;용도 (Purpose)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;정적 분석&lt;/td&gt;
&lt;td&gt;IDA Pro&lt;/td&gt;
&lt;td&gt;ChaCha8 구현 루틴 및 암호화 로직 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;동적 분석&lt;/td&gt;
&lt;td&gt;CryptGenRandom API Hooking (x86)&lt;/td&gt;
&lt;td&gt;실시간 키 및 nonce 추출&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;행위 분석&lt;/td&gt;
&lt;td&gt;Process Monitor&lt;/td&gt;
&lt;td&gt;파일 I/O 및 멀티스레드 행위 추적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;검증 도구&lt;/td&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;td&gt;ChaCha8 복호화 스크립트 개발 및 PoC&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 4. 암호화 기술 분석 (Technical Analysis) &lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.1 전체 암호화 워크플로우&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DragonForce는 고성능 멀티스레딩 모델을 기반으로 다음과 같은 5단계 프로세스를 거칩니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;멀티스레드 생성 :&lt;/b&gt; WinMain에서 CreateThread API를 반복 호출하여 다수의 워커 스레드(StartAddress) 생성&lt;/li&gt;
&lt;li&gt;&lt;b&gt;키 및 Nonce 생성 :&lt;/b&gt; CryptGenRandom API를 통해 파일별로 고유한 32바이트 ChaCha 키와 8바이트 nonce를 생성&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ChaCha State 초기화 :&lt;/b&gt; 생성된 키와 nonce로 ChaCha state를 초기화하고 카운터를 0으로 설정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;차별화된 파일 암호화 :&lt;/b&gt; 파일 크기 및 타입에 따라 전체/부분/헤더 암호화 전략을 선택적으로 적용&lt;/li&gt;
&lt;li&gt;&lt;b&gt;메타데이터 저장 :&lt;/b&gt; ChaCha 키, nonce, 파일명 정보를 RSA 공개키로 암호화하여 파일 footer에 추가&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.2 키 생성 및 관리 (Key Generation)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.2.1 CryptGenRandom을 통한 난수 생성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DragonForce는 Windows CryptoAPI의 CryptGenRandom 함수를 사용하여 암호학적으로 안전한 난수를 생성합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1770105867226&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 각 파일마다 고유한 키와 nonce 생성
CryptGenRandom(hProv, 32, chacha_key);    // 32바이트 ChaCha Key
CryptGenRandom(hProv, 8, chacha_nonce);   // 8바이트 ChaCha Nonce&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.2.2 ChaCha State 초기화&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성된 키와 nonce를 사용하여 ChaCha state를 초기화합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Constant:&lt;/b&gt; &quot;expand 32-byte k&quot; (ChaCha 표준 상수)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Key:&lt;/b&gt; CryptGenRandom으로 생성한 32바이트 난수&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Counter:&lt;/b&gt; 0으로 초기화 (블록마다 1씩 증가)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Nonce:&lt;/b&gt; CryptGenRandom으로 생성한 8바이트 난수&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ChaCha State 구조 (64바이트):&lt;/b&gt;&lt;/p&gt;
&lt;table id=&quot;2fbc9832-acf8-8087-a749-e4e262fc82b3&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;2fbc9832-acf8-807d-91cc-fc0826b792d8&quot;&gt;
&lt;td id=&quot;M:]~&quot;&gt;Constant (16B)&lt;/td&gt;
&lt;td id=&quot;UuAR&quot;&gt;Key (32B)&lt;/td&gt;
&lt;td id=&quot;kw=}&quot;&gt;Counter (8B)&lt;/td&gt;
&lt;td id=&quot;pP^p&quot;&gt;Nonce (8B)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.2.3 메타데이터 생성 및 RSA 암호화&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 복호화에 필요한 정보를 메타데이터로 구성하여 RSA 공개키로 암호화합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;메타데이터 구조 (&amp;rarr; RSA 공개키로 암호화 &amp;rarr; 파일 footer에 추가) :&lt;/b&gt;&lt;/p&gt;
&lt;table id=&quot;2fbc9832-acf8-8036-a946-e6b9872acd12&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;2fbc9832-acf8-8028-89ae-d62da8cc3905&quot;&gt;
&lt;td id=&quot;F&amp;#96;KJ&quot;&gt;ChaCha Key (32B)&lt;/td&gt;
&lt;td id=&quot;&amp;#96;Y^x&quot;&gt;ChaCha Nonce (8B)&lt;/td&gt;
&lt;td id=&quot;XV&amp;gt;~&quot;&gt;파일명 길이 (4B)&lt;/td&gt;
&lt;td id=&quot;pvG^&quot;&gt;파일명 (Variable)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공격자는 RSA 개인키를 통해 이 메타데이터를 복호화하여 각 파일의 ChaCha 키를 복구할 수 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 4.3 파일 처리 및 I/O 아키텍처 &lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt; 4.3.1 CreateThread 기반 멀티스레드 암호화 &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770105919097&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[WinMain]
    ├─&amp;gt; CreateThread (Worker Thread 1) &amp;rarr; StartAddress
    ├─&amp;gt; CreateThread (Worker Thread 2) &amp;rarr; StartAddress
    ├─&amp;gt; CreateThread (Worker Thread 3) &amp;rarr; StartAddress
    └─&amp;gt; CreateThread (Worker Thread N) &amp;rarr; StartAddress

[StartAddress]
    └─&amp;gt; 파일 시스템 순회
        └─&amp;gt; 대상 파일 발견
            └─&amp;gt; 파일 암호화 수행&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.3.2 파일 암호화 메인 로직&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음의 순서로 파일 암호화를 수행합니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;키 및 Nonce 생성&lt;/b&gt;: CryptGenRandom 호출&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ChaCha State 초기화&lt;/b&gt;: 키, nonce, 카운터 설정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;파일 크기/타입 판별&lt;/b&gt;: 암호화 전략 선택&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ChaCha8 블록 암호화&lt;/b&gt;: 실제 암호화 수행&lt;/li&gt;
&lt;li&gt;&lt;b&gt;메타데이터 기록&lt;/b&gt;: RSA로 암호화된 메타데이터를 footer에 추가&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.3.3 파일 크기 및 타입에 따른 차별화된 암호화 전략&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DragonForce는 효율성을 위해 파일 크기와 타입에 따라 세 가지 암호화 방식을 선택적으로 적용합니다.&lt;/p&gt;
&lt;table id=&quot;1daf80c0-2a1f-4dd6-b816-f9a435759819&quot; style=&quot;border-collapse: collapse; width: 100%; height: 80px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;&lt;b&gt;암호화 방식&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;&lt;b&gt;대상 파일&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;22a1089f-c559-450e-860d-8edbd17a2818&quot; style=&quot;height: 21px;&quot;&gt;
&lt;td id=&quot;Y:&amp;lt;h&quot; style=&quot;height: 21px;&quot;&gt;전체 파일 암호화&lt;/td&gt;
&lt;td id=&quot;GhWx&quot; style=&quot;height: 21px;&quot;&gt;작은 파일 (&amp;lt; 1MB)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;c4a7b610-03c5-48a1-a699-bfae190a76a3&quot; style=&quot;height: 21px;&quot;&gt;
&lt;td id=&quot;Y:&amp;lt;h&quot; style=&quot;height: 21px;&quot;&gt;선택적 청크 암호화&lt;/td&gt;
&lt;td id=&quot;GhWx&quot; style=&quot;height: 21px;&quot;&gt;큰 파일 (&amp;ge; 1MB, 성능 최적화)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2476b08c-03f5-4ec4-a7b9-9ef427243e87&quot; style=&quot;height: 21px;&quot;&gt;
&lt;td id=&quot;Y:&amp;lt;h&quot; style=&quot;height: 21px;&quot;&gt;헤더만 암호화&lt;/td&gt;
&lt;td id=&quot;GhWx&quot; style=&quot;height: 21px;&quot;&gt;특정 파일 타입 (미디어 파일 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;암호화 프로세스 :&lt;/span&gt; &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770105962531&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SetFilePointerEx (파일 포인터 이동)
    &amp;darr;
ReadFile (데이터 읽기)
    &amp;darr;
Encryption (ChaCha8 블록 암호화)
    &amp;darr;
WriteFile (암호화된 데이터 쓰기)
    &amp;darr;
파일명 변경 (원본.확장자 &amp;rarr; 원본.확장자.dragonforce_encrypted)&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.4 정적 분석&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;멀티스레드 암호화 (CreateThread)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;221&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sWwle/dJMcacvd1W0/wJREjY7miEdssDlckTt0dk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sWwle/dJMcacvd1W0/wJREjY7miEdssDlckTt0dk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sWwle/dJMcacvd1W0/wJREjY7miEdssDlckTt0dk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsWwle%2FdJMcacvd1W0%2FwJREjY7miEdssDlckTt0dk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1017&quot; height=&quot;221&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;221&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;작업자 스레드 함수 (암호화)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;477&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mBD4f/dJMcajuiuIp/ZKGm5kwkkLhQKlwKmUtoX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mBD4f/dJMcajuiuIp/ZKGm5kwkkLhQKlwKmUtoX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mBD4f/dJMcajuiuIp/ZKGm5kwkkLhQKlwKmUtoX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmBD4f%2FdJMcajuiuIp%2FZKGm5kwkkLhQKlwKmUtoX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;966&quot; height=&quot;477&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;477&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1145&quot; data-origin-height=&quot;615&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GyXJm/dJMcagj39zC/NLIVlTvR5I94Xz03QqKGiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GyXJm/dJMcagj39zC/NLIVlTvR5I94Xz03QqKGiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GyXJm/dJMcagj39zC/NLIVlTvR5I94Xz03QqKGiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGyXJm%2FdJMcagj39zC%2FNLIVlTvR5I94Xz03QqKGiK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1145&quot; height=&quot;615&quot; data-origin-width=&quot;1145&quot; data-origin-height=&quot;615&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;pbData (RSA1 시그니처)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;542&quot; data-origin-height=&quot;243&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biscQy/dJMcah4mfiZ/SNK59aJrbk2MSvMdhMt680/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biscQy/dJMcah4mfiZ/SNK59aJrbk2MSvMdhMt680/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biscQy/dJMcah4mfiZ/SNK59aJrbk2MSvMdhMt680/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiscQy%2FdJMcah4mfiZ%2FSNK59aJrbk2MSvMdhMt680%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;542&quot; height=&quot;243&quot; data-origin-width=&quot;542&quot; data-origin-height=&quot;243&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 암호화 실행 함수&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;277&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBbq8A/dJMcadHBP61/1oIYwqnSm8pI1dVlvDOqm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBbq8A/dJMcadHBP61/1oIYwqnSm8pI1dVlvDOqm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBbq8A/dJMcadHBP61/1oIYwqnSm8pI1dVlvDOqm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBbq8A%2FdJMcadHBP61%2F1oIYwqnSm8pI1dVlvDOqm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1140&quot; height=&quot;277&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;277&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;933&quot; data-origin-height=&quot;137&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwlKTA/dJMcadHBP65/IcqAmnz0Mxn0uk7HtreozK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwlKTA/dJMcadHBP65/IcqAmnz0Mxn0uk7HtreozK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwlKTA/dJMcadHBP65/IcqAmnz0Mxn0uk7HtreozK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwlKTA%2FdJMcadHBP65%2FIcqAmnz0Mxn0uk7HtreozK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;933&quot; height=&quot;137&quot; data-origin-width=&quot;933&quot; data-origin-height=&quot;137&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beJIVV/dJMcab37EpJ/7axycTeih7AK7LY6b0v8Y0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beJIVV/dJMcab37EpJ/7axycTeih7AK7LY6b0v8Y0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beJIVV/dJMcab37EpJ/7axycTeih7AK7LY6b0v8Y0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeJIVV%2FdJMcab37EpJ%2F7axycTeih7AK7LY6b0v8Y0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1140&quot; height=&quot;500&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/I1QNP/dJMcaia8AsH/89chy36cobYMzL49QNb220/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/I1QNP/dJMcaia8AsH/89chy36cobYMzL49QNb220/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/I1QNP/dJMcaia8AsH/89chy36cobYMzL49QNb220/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FI1QNP%2FdJMcaia8AsH%2F89chy36cobYMzL49QNb220%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;102&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;22&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C0HiC/dJMcadgzrkT/nP4Yelk5OHQjuGYAAbS1W0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C0HiC/dJMcadgzrkT/nP4Yelk5OHQjuGYAAbS1W0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C0HiC/dJMcadgzrkT/nP4Yelk5OHQjuGYAAbS1W0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC0HiC%2FdJMcadgzrkT%2FnP4Yelk5OHQjuGYAAbS1W0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1150&quot; height=&quot;22&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;22&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1065&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EMBen/dJMcaaKVnRp/N6TxAawgMo63SYepen7S3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EMBen/dJMcaaKVnRp/N6TxAawgMo63SYepen7S3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EMBen/dJMcaaKVnRp/N6TxAawgMo63SYepen7S3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEMBen%2FdJMcaaKVnRp%2FN6TxAawgMo63SYepen7S3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1065&quot; height=&quot;18&quot; data-origin-width=&quot;1065&quot; data-origin-height=&quot;18&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1112&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CLWDL/dJMcabC4QCV/MGVp6IudYVcHk2yTwini0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CLWDL/dJMcabC4QCV/MGVp6IudYVcHk2yTwini0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CLWDL/dJMcabC4QCV/MGVp6IudYVcHk2yTwini0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCLWDL%2FdJMcabC4QCV%2FMGVp6IudYVcHk2yTwini0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1112&quot; height=&quot;17&quot; data-origin-width=&quot;1112&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1770106604713&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;스레드 시작
    &amp;darr;
Crypto API 초기화
    &amp;darr;
RSA 공개키 임포트 (CryptImportKey)
- pbData : 4096바이트 RSA 공개키
- &quot;RSA1&quot; 시그니처 확인됨
    &amp;darr;
5MB 암호화 버퍼 할당 (VirtualAlloc)
    &amp;darr;
무한 루프 시작
    &amp;darr;
┌──────────────────────────────┐
│ 크리티컬 섹션 진입            │
│ (EnterCriticalSection)        │
└──────────────────────────────┘
    &amp;darr;
작업 큐에서 파일 항목 가져오기
    &amp;darr; 
큐가 비어있음? ──Yes─&amp;rarr; 5초 대기 후 재시도
    &amp;darr; No
큐에서 항목 제거 (연결 리스트 업데이트)
    &amp;darr;
┌──────────────────────────────┐
│ 크리티컬 섹션 탈출            │
│ (LeaveCriticalSection)        │
└──────────────────────────────┘
    &amp;darr;
종료 플래그 확인? ──Yes─&amp;rarr; 스레드 종료
    &amp;darr; No
파일 경로 처리
    &amp;darr;
파일 암호화 실행 함수 호출
- RSA 공개키로 ChaCha 키/Nonce 암호화
- select_encryption_strategy 호출
- 파일 크기별 암호화 전략 실행
    &amp;darr;
작업 항목 메모리 해제 (free)
    &amp;darr;
무한 루프 계속&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;랜덤 키/Nonce 생성 (CryptGenRandom)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1105&quot; data-origin-height=&quot;301&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9L1k4/dJMcaaxo1j2/oXSx7oFWbXTZWfIabyeJ6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9L1k4/dJMcaaxo1j2/oXSx7oFWbXTZWfIabyeJ6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9L1k4/dJMcaaxo1j2/oXSx7oFWbXTZWfIabyeJ6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9L1k4%2FdJMcaaxo1j2%2FoXSx7oFWbXTZWfIabyeJ6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1105&quot; height=&quot;301&quot; data-origin-width=&quot;1105&quot; data-origin-height=&quot;301&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ChaCha State 초기화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1092&quot; data-origin-height=&quot;96&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dggKew/dJMcac20dD2/QtqaMG4LY4DVgKy9dazuI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dggKew/dJMcac20dD2/QtqaMG4LY4DVgKy9dazuI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dggKew/dJMcac20dD2/QtqaMG4LY4DVgKy9dazuI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdggKew%2FdJMcac20dD2%2FQtqaMG4LY4DVgKy9dazuI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1092&quot; height=&quot;96&quot; data-origin-width=&quot;1092&quot; data-origin-height=&quot;96&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;ChaCha8 블록 암호화&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. ChaCha8 키스트림 생성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ChaCha8은 일반적인 ChaCha20의 10번 더블 라운드 대신, &lt;b&gt;4번의 더블 라운드&lt;/b&gt;를 수행하여 성능을 최적화한 변형입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1770106640820&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ChaCha8 라운드 구조:
┌─────────────────────────────────┐
│    Initial State (64 bytes)     │
│  [Constant | Key | Ctr | Nonce] │
└─────────────────────────────────┘
            &amp;darr;
    ┌───────────────┐
    │ Double Round  │  &amp;larr; 4번 반복 (ChaCha8)
    │ (QR 함수 8회) │
    └───────────────┘
            &amp;darr;
┌─────────────────────────────────┐
│      Keystream (64 bytes)       │
└─────────────────────────────────┘&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;2. ChaCha 라운드 연산 (Quarter Round)&lt;/span&gt; &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770106650295&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Quarter Round (a, b, c, d):
    a += b; d ^= a; d &amp;lt;&amp;lt;&amp;lt;= 16;
	    c += d; b ^= c; b &amp;lt;&amp;lt;&amp;lt;= 12;
    a += b; d ^= a; d &amp;lt;&amp;lt;&amp;lt;= 8;
    c += d; b ^= c; b &amp;lt;&amp;lt;&amp;lt;= 7;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;997&quot; data-origin-height=&quot;198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pquwo/dJMcadU8CeD/asUyZYkqTaD1IAY8fwbGgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pquwo/dJMcadU8CeD/asUyZYkqTaD1IAY8fwbGgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pquwo/dJMcadU8CeD/asUyZYkqTaD1IAY8fwbGgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpquwo%2FdJMcadU8CeD%2FasUyZYkqTaD1IAY8fwbGgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;997&quot; height=&quot;198&quot; data-origin-width=&quot;997&quot; data-origin-height=&quot;198&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;3. XOR 암호화 및 카운터 증가&lt;/span&gt; &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1770106666541&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;*// 생성된 키스트림과 평문을 XOR*

for (i = 0; i &amp;lt; block_size; i++) {
    ciphertext[i] = plaintext[i] ^ keystream[i];
}

*// 블록마다 카운터 증가*

counter++;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLaE2n/dJMcaiWsz6H/ZUTbfpKGRTAiE7aYdBoL51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLaE2n/dJMcaiWsz6H/ZUTbfpKGRTAiE7aYdBoL51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLaE2n/dJMcaiWsz6H/ZUTbfpKGRTAiE7aYdBoL51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLaE2n%2FdJMcaiWsz6H%2FZUTbfpKGRTAiE7aYdBoL51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;936&quot; height=&quot;300&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;메타데이터 생성 및 RSA 암호화&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;메타데이터 구조체 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1101&quot; data-origin-height=&quot;518&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPy6Cn/dJMcaaYse0L/bjub3Z3HVvdTrv6ZdL4a81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPy6Cn/dJMcaaYse0L/bjub3Z3HVvdTrv6ZdL4a81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPy6Cn/dJMcaaYse0L/bjub3Z3HVvdTrv6ZdL4a81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPy6Cn%2FdJMcaaYse0L%2Fbjub3Z3HVvdTrv6ZdL4a81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1101&quot; height=&quot;518&quot; data-origin-width=&quot;1101&quot; data-origin-height=&quot;518&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RSA 공개키로 메타데이터 암호화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1511&quot; data-origin-height=&quot;22&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZKVZf/dJMcaaRIw8V/gABK9s1WhQPW8XRm4iGXEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZKVZf/dJMcaaRIw8V/gABK9s1WhQPW8XRm4iGXEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZKVZf/dJMcaaRIw8V/gABK9s1WhQPW8XRm4iGXEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZKVZf%2FdJMcaaRIw8V%2FgABK9s1WhQPW8XRm4iGXEK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1511&quot; height=&quot;22&quot; data-origin-width=&quot;1511&quot; data-origin-height=&quot;22&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;암호화된 메타데이터를 파일 footer에 기록&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1091&quot; data-origin-height=&quot;238&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lwRTy/dJMcacoq3cY/pxo6T4fxIETkKklZzkbdj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lwRTy/dJMcacoq3cY/pxo6T4fxIETkKklZzkbdj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lwRTy/dJMcacoq3cY/pxo6T4fxIETkKklZzkbdj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlwRTy%2FdJMcacoq3cY%2Fpxo6T4fxIETkKklZzkbdj1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1091&quot; height=&quot;238&quot; data-origin-width=&quot;1091&quot; data-origin-height=&quot;238&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;파일 처리 전체 흐름&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 열기 및 크기 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1327&quot; data-origin-height=&quot;98&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKgdAe/dJMb99ZzZIV/EaHgSA67C7wqLV0YI3qJi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKgdAe/dJMb99ZzZIV/EaHgSA67C7wqLV0YI3qJi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKgdAe/dJMb99ZzZIV/EaHgSA67C7wqLV0YI3qJi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKgdAe%2FdJMb99ZzZIV%2FEaHgSA67C7wqLV0YI3qJi1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1327&quot; height=&quot;98&quot; data-origin-width=&quot;1327&quot; data-origin-height=&quot;98&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1353&quot; data-origin-height=&quot;62&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTmU6C/dJMcaiIUUOy/PeWgCJA2MGaV7528oySwk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTmU6C/dJMcaiIUUOy/PeWgCJA2MGaV7528oySwk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTmU6C/dJMcaiIUUOy/PeWgCJA2MGaV7528oySwk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTmU6C%2FdJMcaiIUUOy%2FPeWgCJA2MGaV7528oySwk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1353&quot; height=&quot;62&quot; data-origin-width=&quot;1353&quot; data-origin-height=&quot;62&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;암호화 전략 선택&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vRRkF/dJMcabXmzWh/eXKwUiF2KlIvYnk7mbSol1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vRRkF/dJMcabXmzWh/eXKwUiF2KlIvYnk7mbSol1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vRRkF/dJMcabXmzWh/eXKwUiF2KlIvYnk7mbSol1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvRRkF%2FdJMcabXmzWh%2FeXKwUiF2KlIvYnk7mbSol1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1017&quot; height=&quot;162&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;162&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1107&quot; data-origin-height=&quot;57&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GHieJ/dJMcabXmzW5/L4AA3mxQr2QlSeJYPjkvLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GHieJ/dJMcabXmzW5/L4AA3mxQr2QlSeJYPjkvLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GHieJ/dJMcabXmzW5/L4AA3mxQr2QlSeJYPjkvLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGHieJ%2FdJMcabXmzW5%2FL4AA3mxQr2QlSeJYPjkvLK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1107&quot; height=&quot;57&quot; data-origin-width=&quot;1107&quot; data-origin-height=&quot;57&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;40&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lCxAV/dJMcahQOLGR/EwGu1QbVt8bmayXn8C0gKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lCxAV/dJMcahQOLGR/EwGu1QbVt8bmayXn8C0gKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lCxAV/dJMcahQOLGR/EwGu1QbVt8bmayXn8C0gKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlCxAV%2FdJMcahQOLGR%2FEwGu1QbVt8bmayXn8C0gKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1020&quot; height=&quot;40&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;40&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전체 암호화 (작은 파일)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1376&quot; data-origin-height=&quot;502&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjMSvu/dJMcac9LhR0/5FsTLZWWfpzWM0C9RzkVh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjMSvu/dJMcac9LhR0/5FsTLZWWfpzWM0C9RzkVh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjMSvu/dJMcac9LhR0/5FsTLZWWfpzWM0C9RzkVh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjMSvu%2FdJMcac9LhR0%2F5FsTLZWWfpzWM0C9RzkVh0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1376&quot; height=&quot;502&quot; data-origin-width=&quot;1376&quot; data-origin-height=&quot;502&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;헤더만 암호화 (중간 크기 파일)&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1073&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IqKXu/dJMcaia8BN8/f9h7h2ROP5BGGq76wVxrjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IqKXu/dJMcaia8BN8/f9h7h2ROP5BGGq76wVxrjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IqKXu/dJMcaia8BN8/f9h7h2ROP5BGGq76wVxrjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIqKXu%2FdJMcaia8BN8%2Ff9h7h2ROP5BGGq76wVxrjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1073&quot; height=&quot;20&quot; data-origin-width=&quot;1073&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;581&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/M4GZh/dJMcacWgcLl/64Ip9r6ZmqpxxWxfgkDKNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/M4GZh/dJMcacWgcLl/64Ip9r6ZmqpxxWxfgkDKNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/M4GZh/dJMcacWgcLl/64Ip9r6ZmqpxxWxfgkDKNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FM4GZh%2FdJMcacWgcLl%2F64Ip9r6ZmqpxxWxfgkDKNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1302&quot; height=&quot;581&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;581&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;청크 단위 선택 암호화 (큰 파일)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;987&quot; data-origin-height=&quot;577&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w7CSR/dJMcai3cTM5/gszZPGKk2CuAn43AKb6S9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w7CSR/dJMcai3cTM5/gszZPGKk2CuAn43AKb6S9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w7CSR/dJMcai3cTM5/gszZPGKk2CuAn43AKb6S9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw7CSR%2FdJMcai3cTM5%2FgszZPGKk2CuAn43AKb6S9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;987&quot; height=&quot;577&quot; data-origin-width=&quot;987&quot; data-origin-height=&quot;577&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1481&quot; data-origin-height=&quot;580&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLQYRW/dJMb99SMAwt/2AWFKbyK0w16g3SrGLQOMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLQYRW/dJMb99SMAwt/2AWFKbyK0w16g3SrGLQOMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLQYRW/dJMb99SMAwt/2AWFKbyK0w16g3SrGLQOMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLQYRW%2FdJMb99SMAwt%2F2AWFKbyK0w16g3SrGLQOMk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1481&quot; height=&quot;580&quot; data-origin-width=&quot;1481&quot; data-origin-height=&quot;580&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;암호화된 데이터 파일에 쓰기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;953&quot; data-origin-height=&quot;542&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTRRt9/dJMcafyIBqh/Dv7RSNxXvSiw08pYPRltVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTRRt9/dJMcafyIBqh/Dv7RSNxXvSiw08pYPRltVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTRRt9/dJMcafyIBqh/Dv7RSNxXvSiw08pYPRltVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTRRt9%2FdJMcafyIBqh%2FDv7RSNxXvSiw08pYPRltVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;953&quot; height=&quot;542&quot; data-origin-width=&quot;953&quot; data-origin-height=&quot;542&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일명 변경 (.dragonforce_encrypted 추가)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TKT1y/dJMb99ZzZJ5/A138ZsXDOlyuiXZUiDjkd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TKT1y/dJMb99ZzZJ5/A138ZsXDOlyuiXZUiDjkd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TKT1y/dJMb99ZzZJ5/A138ZsXDOlyuiXZUiDjkd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTKT1y%2FdJMb99ZzZJ5%2FA138ZsXDOlyuiXZUiDjkd1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1100&quot; height=&quot;20&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1013&quot; data-origin-height=&quot;197&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwJ9rk/dJMb99SMAyf/qA1kpGyxu2A9yj3pkv3GhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwJ9rk/dJMb99SMAyf/qA1kpGyxu2A9yj3pkv3GhK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwJ9rk/dJMb99SMAyf/qA1kpGyxu2A9yj3pkv3GhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwJ9rk%2FdJMb99SMAyf%2FqA1kpGyxu2A9yj3pkv3GhK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1013&quot; height=&quot;197&quot; data-origin-width=&quot;1013&quot; data-origin-height=&quot;197&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGBpI2/dJMcac20dKQ/WfCLnNnZ7fV53SQmJ1lcJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGBpI2/dJMcac20dKQ/WfCLnNnZ7fV53SQmJ1lcJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGBpI2/dJMcac20dKQ/WfCLnNnZ7fV53SQmJ1lcJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGBpI2%2FdJMcac20dKQ%2FWfCLnNnZ7fV53SQmJ1lcJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1017&quot; height=&quot;300&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1111&quot; data-origin-height=&quot;36&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnRifb/dJMcahQOLIv/oFwKudyqSkGp4JKBoBMiB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnRifb/dJMcahQOLIv/oFwKudyqSkGp4JKBoBMiB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnRifb/dJMcahQOLIv/oFwKudyqSkGp4JKBoBMiB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnRifb%2FdJMcahQOLIv%2FoFwKudyqSkGp4JKBoBMiB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1111&quot; height=&quot;36&quot; data-origin-width=&quot;1111&quot; data-origin-height=&quot;36&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1770106854637&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[파일 처리 과정]
1. 파일 열기 및 크기 확인
   &amp;darr;
2. CryptGenRandom 호출
   - 32바이트 ChaCha 키 생성
   - 8바이트 nonce 생성
   &amp;darr;
3. ChaCha State 초기화
   - Constant: &quot;expand 32-byte k&quot;
   - Key: 생성된 32바이트
   - Counter: 0
   - Nonce: 생성된 8바이트
   &amp;darr;
4. 파일 크기/타입에 따라 암호화 전략 선택
   - 작은 파일: 전체 암호화
   - 큰 파일: 선택적 청크 암호화
   - 특정 타입: 헤더만 암호화
   &amp;darr;
5. ChaCha8 블록 암호화
   - 4번의 더블 라운드
   - 키스트림 생성
   - XOR 연산
   &amp;darr;
6. 메타데이터 생성 및 암호화
   - [Key | Nonce | 파일명 길이 | 파일명]
   - RSA 공개키로 암호화
   - 파일 footer에 추가
   &amp;darr;
7. 파일명 변경
   원본.확장자 &amp;rarr; 원본.확장자.dragonforce_encrypted&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;함수 호출 관계도 (Call Graph)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;다운로드.svg&quot; data-origin-width=&quot;678&quot; data-origin-height=&quot;1845&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c06vOB/dJMcagYFa7b/tsfCa6pBQWfhkQo1KmXF80/tfile.svg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c06vOB/dJMcagYFa7b/tsfCa6pBQWfhkQo1KmXF80/tfile.svg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c06vOB/dJMcagYFa7b/tsfCa6pBQWfhkQo1KmXF80/tfile.svg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc06vOB%2FdJMcagYFa7b%2FtsfCa6pBQWfhkQo1KmXF80%2Ftfile.svg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;405&quot; height=&quot;1102&quot; data-filename=&quot;다운로드.svg&quot; data-origin-width=&quot;678&quot; data-origin-height=&quot;1845&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5. 복호화 기술 분석 (Decryption Strategy)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.1 복호화 가능성 분석&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DragonForce 랜섬웨어는 다음과 같은 특성으로 인해 &lt;b&gt;완벽한 복호화가 가능&lt;/b&gt;합니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;키 생성 시점 취약점 :&lt;/b&gt; CryptGenRandom API 호출 시 생성되는 평문 키를 API 후킹으로 실시간 캡처 가능&lt;/li&gt;
&lt;li&gt;&lt;b&gt;메모리 덤프 가능성 :&lt;/b&gt; 암호화 진행 중 프로세스 메모리에 평문 키가 존재&lt;/li&gt;
&lt;li&gt;&lt;b&gt;파일별 독립 암호화 :&lt;/b&gt; 각 파일마다 별도의 키를 사용하므로, 해당 키만 있으면 개별 파일 복호화 가능&lt;/li&gt;
&lt;li&gt;&lt;b&gt;RSA 개인키 불필요 :&lt;/b&gt; API 후킹으로 평문 키를 직접 확보하므로, 공격자의 RSA 개인키 없이도 복호화 가능&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.2 ChaCha8 키 복구 메커니즘&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DragonForce의 암호학적 약점은 &lt;b&gt;CryptGenRandom API 호출 시점에 생성되는 32바이트 키와 8바이트 nonce&lt;/b&gt;가 평문으로 메모리에 존재한다는 점입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1770106975026&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# API 후킹 로그에서 키 추출
def extract_keys_from_log(log_file):
    keys = []
    with open(log_file, 'r') as f:
        for line in f:
            if &quot;Length: 32 bytes&quot; in line:
                # 다음 줄에서 키 추출
                key_line = next(f)
                key = extract_hex(key_line)  # &quot;Data: ...&quot; 파싱
                
                # 이어서 nonce 추출 (다음 32바이트 로그 항목)
                nonce_line1 = next(f)
                nonce_line2 = next(f)
                nonce = extract_hex(nonce_line2)
                
                keys.append((key, nonce))
    return keys&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.3 ChaCha8 복호화 스크립트 개발&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캡처한 키 정보를 활용하여 Python 기반 ChaCha8 복호화 스크립트를 개발했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스크립트 주요 기능:&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;API 후킹 로그 파일 파싱 (키/nonce 추출)&lt;/li&gt;
&lt;li&gt;암호화 파일의 footer에서 메타데이터 추출 (선택적)&lt;/li&gt;
&lt;li&gt;ChaCha8 state 초기화 및 키스트림 생성&lt;/li&gt;
&lt;li&gt;XOR 연산을 통한 복호화 수행&lt;/li&gt;
&lt;li&gt;원본 파일 복원 및 저장&lt;/li&gt;
&lt;/ol&gt;
&lt;pre id=&quot;code_1770106986733&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def chacha8_decrypt(ciphertext, key, nonce):
    &quot;&quot;&quot;
    ChaCha8 복호화 (ChaCha20의 8라운드 변형)
    &quot;&quot;&quot;
    # 1. ChaCha State 초기화
    state = initialize_chacha_state(key, nonce, counter=0)
    
    # 2. 블록 단위 복호화
    plaintext = bytearray()
    block_size = 64  # ChaCha는 64바이트 블록
    
    for block_idx in range(0, len(ciphertext), block_size):
        # 키스트림 생성 (4번의 더블 라운드)
        keystream = chacha8_block(state, counter=block_idx // block_size)
        
        # XOR 복호화
        block = ciphertext[block_idx:block_idx + block_size]
        for i in range(len(block)):
            plaintext.append(block[i] ^ keystream[i])
    
    return bytes(plaintext)

def chacha8_block(initial_state, counter):
    &quot;&quot;&quot;
    ChaCha8 키스트림 블록 생성 (4번의 더블 라운드)
    &quot;&quot;&quot;
    state = initial_state.copy()
    state[12] = counter  # 카운터 설정
    
    working_state = state.copy()
    
    # 4번의 더블 라운드 (총 8번의 라운드)
    for _ in range(4):
        # Column round
        quarter_round(working_state, 0, 4, 8, 12)
        quarter_round(working_state, 1, 5, 9, 13)
        quarter_round(working_state, 2, 6, 10, 14)
        quarter_round(working_state, 3, 7, 11, 15)
        
        # Diagonal round
        quarter_round(working_state, 0, 5, 10, 15)
        quarter_round(working_state, 1, 6, 11, 12)
        quarter_round(working_state, 2, 7, 8, 13)
        quarter_round(working_state, 3, 4, 9, 14)
    
    # Add initial state
    for i in range(16):
        working_state[i] = (working_state[i] + state[i]) &amp;amp; 0xFFFFFFFF
    
    # Convert to bytes (keystream)
    return state_to_bytes(working_state)&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.4 무결성 검증&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복구된 파일의 유효성을 판단하기 위해 파일 헤더 시그니처(매직 넘버)를 검증합니다.&lt;/p&gt;
&lt;table id=&quot;2fbc9832-acf8-8054-acaf-de7fdf3111e8&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;2fbc9832-acf8-8037-bd29-d4660216b1f6&quot;&gt;
&lt;td id=&quot;qN&amp;lt;@&quot;&gt;&lt;b&gt;파일 유형&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;B{r_&quot;&gt;&lt;b&gt;매직 넘버 (Hex)&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;lPGh&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fbc9832-acf8-808d-9a7c-d74ce151cd8c&quot;&gt;
&lt;td id=&quot;qN&amp;lt;@&quot;&gt;JPG&lt;/td&gt;
&lt;td id=&quot;B{r_&quot;&gt;FF D8 FF&lt;/td&gt;
&lt;td id=&quot;lPGh&quot;&gt;JPEG 이미지 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fbc9832-acf8-80fd-9f1a-d58323658879&quot;&gt;
&lt;td id=&quot;qN&amp;lt;@&quot;&gt;PNG&lt;/td&gt;
&lt;td id=&quot;B{r_&quot;&gt;89 50 4E 47 0D 0A 1A 0A&lt;/td&gt;
&lt;td id=&quot;lPGh&quot;&gt;PNG 이미지 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fbc9832-acf8-808f-b426-eaf3d955fd99&quot;&gt;
&lt;td id=&quot;qN&amp;lt;@&quot;&gt;GIF&lt;/td&gt;
&lt;td id=&quot;B{r_&quot;&gt;47 49 46 38&lt;/td&gt;
&lt;td id=&quot;lPGh&quot;&gt;GIF 이미지 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fbc9832-acf8-80e5-96d1-e31f92956a0e&quot;&gt;
&lt;td id=&quot;qN&amp;lt;@&quot;&gt;PDF&lt;/td&gt;
&lt;td id=&quot;B{r_&quot;&gt;25 50 44 46&lt;/td&gt;
&lt;td id=&quot;lPGh&quot;&gt;PDF 문서 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fbc9832-acf8-8045-86da-f2bea9c97e11&quot;&gt;
&lt;td id=&quot;qN&amp;lt;@&quot;&gt;EXE/DLL&lt;/td&gt;
&lt;td id=&quot;B{r_&quot;&gt;4D 5A (MZ)&lt;/td&gt;
&lt;td id=&quot;lPGh&quot;&gt;Windows 실행 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fbc9832-acf8-801c-9c58-fbddd63e1633&quot;&gt;
&lt;td id=&quot;qN&amp;lt;@&quot;&gt;ZIP/DOCX&lt;/td&gt;
&lt;td id=&quot;B{r_&quot;&gt;50 4B 03 04&lt;/td&gt;
&lt;td id=&quot;lPGh&quot;&gt;압축 파일 및 MS Office&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fbc9832-acf8-80e2-bd73-fa350e904fd3&quot;&gt;
&lt;td id=&quot;qN&amp;lt;@&quot;&gt;DOC (Old)&lt;/td&gt;
&lt;td id=&quot;B{r_&quot;&gt;D0 CF 11 E0&lt;/td&gt;
&lt;td id=&quot;lPGh&quot;&gt;MS Office 구버전&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fbc9832-acf8-803e-8a77-c628c3b8e900&quot;&gt;
&lt;td id=&quot;qN&amp;lt;@&quot;&gt;TXT&lt;/td&gt;
&lt;td id=&quot;B{r_&quot;&gt;가독 문자 비중 70% 이상&lt;/td&gt;
&lt;td id=&quot;lPGh&quot;&gt;텍스트 파일 판별 로직&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre id=&quot;code_1770107002529&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def verify_decryption(decrypted_data, expected_filetype):
    &quot;&quot;&quot;
    복호화된 데이터의 매직 넘버 검증
    &quot;&quot;&quot;
    magic_numbers = {
        'jpg': bytes([0xFF, 0xD8, 0xFF]),
        'png': bytes([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A]),
        'pdf': bytes([0x25, 0x50, 0x44, 0x46]),
        'exe': bytes([0x4D, 0x5A]),
        'zip': bytes([0x50, 0x4B, 0x03, 0x04]),
        # ... 추가 파일 타입
    }
    
    if expected_filetype in magic_numbers:
        expected_magic = magic_numbers[expected_filetype]
        return decrypted_data.startswith(expected_magic)
    
    return True  # 알 수 없는 타입은 검증 생략&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6. 요약 및 결론 (Conclusion)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.1 최종 평가&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DragonForce 랜섬웨어는 ChaCha8 스트림 암호화와 RSA 하이브리드 방식, 멀티스레드 기반 고속 처리를 특징으로 하는 정교한 악성코드입니다. 그러나 &lt;b&gt;키 생성 과정에서 CryptGenRandom API를 직접 호출하는 구조적 취약점&lt;/b&gt;으로 인해, API 후킹을 통한 실시간 키 캡처가 가능하며, 이를 활용한 완벽한 복호화가 실증되었습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1770107030336&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[취약점 요약]
CryptGenRandom API 호출
         &amp;darr;
   평문 키 생성 (32B)
         &amp;darr;
  ★ API 후킹 지점 ★  &amp;larr; 키 캡처 가능!
         &amp;darr;
  ChaCha State 초기화
         &amp;darr;
   파일 암호화 수행&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.2 대응 가이드&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;6.2.1 예방적 조치&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;API 모니터링 강화&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CryptGenRandom, BCryptGenRandom 등 암호화 API 호출을 실시간 모니터링하는 EDR 솔루션 배치&lt;/li&gt;
&lt;li&gt;의심스러운 대량의 난수 생성 패턴 탐지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;행위 기반 탐지&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;멀티스레드 기반의 대량 파일 접근 패턴 탐지&lt;/li&gt;
&lt;li&gt;.dragonforce_encrypted 확장자 추가 행위 차단&lt;/li&gt;
&lt;li&gt;파일 footer에 메타데이터 기록 행위 모니터링&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;파일 시스템 보호&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실시간 백업 시스템 구축 (VSS, 증분 백업)&lt;/li&gt;
&lt;li&gt;중요 디렉터리에 대한 접근 제어 강화&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;6.2.2 사후 대응&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;초동 조치&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;감염 발견 즉시 시스템 격리 (네트워크 차단)&lt;/li&gt;
&lt;li&gt;시스템을 종료하지 말고 &lt;b&gt;메모리 덤프(Full Memory Dump)&lt;/b&gt; 수행&lt;/li&gt;
&lt;li&gt;프로세스 메모리에서 CryptGenRandom 생성 키 추출 시도&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;키 복구 시도&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;API 후킹 도구(Frida, Detours 등)를 사용하여 CryptGenRandom 호출 로그 확보&lt;/li&gt;
&lt;li&gt;메모리 포렌식을 통한 평문 키 탐색&lt;/li&gt;
&lt;li&gt;로그 파일 또는 메모리 덤프에서 32바이트 키 패턴 추출&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;복호화 수행&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;본 보고서에서 제공하는 ChaCha8 복호화 스크립트 활용&lt;/li&gt;
&lt;li&gt;추출한 키/nonce로 암호화된 파일 복원&lt;/li&gt;
&lt;li&gt;매직 넘버 검증을 통한 복호화 성공 여부 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.3 기술적 특징 요약 &lt;/b&gt;&lt;/h4&gt;
&lt;table id=&quot;2fbc9832-acf8-8072-a283-d1d1d6648137&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;2fbc9832-acf8-80e3-8cf4-cac8f3999b7f&quot;&gt;
&lt;td id=&quot;n~Wd&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td id=&quot;vuy=&quot;&gt;&lt;b&gt;세부 내용&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fbc9832-acf8-8050-9efa-c25225fd32a6&quot;&gt;
&lt;td id=&quot;n~Wd&quot;&gt;암호화 알고리즘&lt;/td&gt;
&lt;td id=&quot;vuy=&quot;&gt;ChaCha8 (4번의 더블 라운드) + RSA (메타데이터)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fbc9832-acf8-8028-a68b-eb510c07b583&quot;&gt;
&lt;td id=&quot;n~Wd&quot;&gt;키 관리&lt;/td&gt;
&lt;td id=&quot;vuy=&quot;&gt;파일별 독립 32바이트 키 + 8바이트 nonce&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fbc9832-acf8-803b-b8ab-c8765332bfb1&quot;&gt;
&lt;td id=&quot;n~Wd&quot;&gt;암호화 전략&lt;/td&gt;
&lt;td id=&quot;vuy=&quot;&gt;파일 크기/타입에 따라 전체/부분/헤더 암호화 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fbc9832-acf8-80ce-a42c-e13ad22e7918&quot;&gt;
&lt;td id=&quot;n~Wd&quot;&gt;멀티스레딩&lt;/td&gt;
&lt;td id=&quot;vuy=&quot;&gt;CreateThread 기반 워커 스레드 병렬 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fbc9832-acf8-8045-b5c3-f552fe4e181b&quot;&gt;
&lt;td id=&quot;n~Wd&quot;&gt;메타데이터&lt;/td&gt;
&lt;td id=&quot;vuy=&quot;&gt;RSA로 암호화된 키 정보를 파일 footer에 저장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fbc9832-acf8-80e2-a85c-c31b551af18b&quot;&gt;
&lt;td id=&quot;n~Wd&quot;&gt;확장자&lt;/td&gt;
&lt;td id=&quot;vuy=&quot;&gt;.dragonforce_encrypted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;2fbc9832-acf8-8061-b788-c9566ff1e12a&quot;&gt;
&lt;td id=&quot;n~Wd&quot;&gt;복호화 가능성&lt;/td&gt;
&lt;td id=&quot;vuy=&quot;&gt;API 후킹 또는 메모리 덤프로 키 확보 시 100% 복구 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.4 결론&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DragonForce 랜섬웨어는 ChaCha8과 RSA를 결합한 하이브리드 암호화 방식과 멀티스레드 기반 고속 암호화를 특징으로 하는 위협적인 악성코드입니다. 그러나 &lt;b&gt;키 생성 과정의 구조적 취약점&lt;/b&gt;으로 인해, 적절한 대응 절차(API 후킹, 메모리 포렌식)를 통해 평문 키를 확보할 경우 &lt;b&gt;RSA 개인키 없이도 완벽한 복호화가 가능&lt;/b&gt;합니다. 분석을 통해 개발된 ChaCha8 복호화 도구는 DragonForce 감염 피해 복구에 직접 활용될 수 있으며, 유사한 ChaCha 기반 랜섬웨어 대응에도 응용 가능합니다. 향후 랜섬웨어 대응을 위해서는 &lt;b&gt;암호화 API 모니터링 강화&lt;/b&gt;와 &lt;b&gt;실시간 메모리 포렌식 체계 구축&lt;/b&gt;이 필수적입니다.&lt;/p&gt;</description>
      <category>랜섬웨어 분석 보고서</category>
      <author>geonwoo9643</author>
      <guid isPermaLink="true">https://mzcompany.tistory.com/11</guid>
      <comments>https://mzcompany.tistory.com/11#entry11comment</comments>
      <pubDate>Tue, 3 Feb 2026 18:18:20 +0900</pubDate>
    </item>
    <item>
      <title>Lynx 랜섬웨어 분석 보고서</title>
      <link>https://mzcompany.tistory.com/10</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 1. 개요 (Overview)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.1 분석 배경&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Lynx&lt;/b&gt; 랜섬웨어는 2024년 중반부터 활동이 두드러진 악성코드로, &lt;b&gt;INC Ransom &amp;rarr; LYNX &amp;rarr; Sinobi&lt;/b&gt;로 이어지는 리브랜딩 계보의 핵심 변종입니다. 특히 Sinobi와 암호화 엔진을 공유하며, 단순 대칭키 암호화를 넘어 &lt;b&gt;ECDH(Curve25519)&lt;/b&gt; 기반의 정교한 키 교환 메커니즘을 채택하고 있습니다. 본 보고서는 Lynx의 암호학적 아키텍처를 정밀 분석하고, 세션 키 생성 과정의 취약점을 이용한 데이터 복구 전략을 제안합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.2 핵심 요약&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;고도화된 키 교환 아키텍처 :&lt;/b&gt; RSA 기반의 단순 구조를 탈피하여, Curve25519 타원 곡선 암호와 SHA-512 KDF(Key Derivation Function)를 결합한 세션 키 생성 모델을 운용합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;고성능 암호화 엔진&lt;/b&gt; &lt;b&gt;:&lt;/b&gt; AES-128 CTR(Counter) 모드를 사용하여 병렬 처리를 지원하며, 파일 끝에 116바이트의 독자적인 메타데이터 마커를 삽입합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;조건부 복구 가능성 :&lt;/b&gt; 공격자의 RSA 개인키가 없더라도, 난수 생성 API(&lt;b&gt;CryptGenRandom&lt;/b&gt;) 호출 시점에 생성된 &lt;b&gt;32바이트 클라이언트 시드&lt;/b&gt;를 메모리 포렌식으로 확보할 경우 완벽한 복구가 가능합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 2. 식별 정보 (Identification)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Malware Family&lt;/b&gt;: Lynx (INC Ransom / Sinobi 계보)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Filetype&lt;/b&gt;: PE32 (Windows Executable)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Hash (SHA256)&lt;/b&gt;: 0315dbb793f855f154aa8d227151f1098bd9b580a4f85064648b85bac1321663&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Extension&lt;/b&gt;: .LYNX&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Ransom Note&lt;/b&gt;: README.txt&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Target&lt;/b&gt;: Windows Enterprise Environment&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 3. 분석 환경 및 도구 (Tools)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;도구명 (Tool)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;용도 (Purpose)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;정적 분석&lt;/td&gt;
&lt;td&gt;IDA Pro&lt;/td&gt;
&lt;td&gt;Curve25519 Montgomery Ladder 및 SHA-512 구현 루틴 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;동적 분석&lt;/td&gt;
&lt;td&gt;x64dbg&lt;/td&gt;
&lt;td&gt;CryptGenRandom 호출 시점의 32바이트 난수(시드) 추출&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;행위 분석&lt;/td&gt;
&lt;td&gt;Process Monitor&lt;/td&gt;
&lt;td&gt;파일 I/O 완료 포트(IOCP) 및 워커 스레드 행위 추적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;검증 도구&lt;/td&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;td&gt;cryptography 라이브러리를 이용한 ECDH 키 파생 및 복구 PoC&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 4. 암호화 기술 분석 (Technical Analysis)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.1 전체 암호화 워크플로우&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Lynx는 고성능 멀티스레딩 모델을 기반으로 다음과 같은 4단계 프로세스를 거칩니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;시드 생성 :&lt;/b&gt; Windows CryptoAPI의 CryptGenRandom을 통해 32바이트 클라이언트 시드를 생성합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ECDH 키 교환 :&lt;/b&gt; 생성된 시드를 Curve25519 표준에 맞게 Clamping한 후, 하드코딩된 서버 공개키와 연산하여 &lt;b&gt;공유 비밀(Shared Secret)&lt;/b&gt;을 도출합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;키 파생(KDF) :&lt;/b&gt; 공유 비밀을 SHA-512로 해싱하여 AES-128 키(16B)와 초기 카운터(16B)를 추출합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;병렬 암호화 :&lt;/b&gt; AES-128 CTR 모드로 데이터를 암호화하며, I/O 완료 포트(IOCP)를 통해 워커 스레드가 1MB 청크 단위로 처리합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.2 키 생성 및 관리 (Key Generation)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.2.1 Curve25519 스칼라 포맷팅 (Clamping)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Lynx는 생성된 32바이트 난수를 그대로 사용하지 않고, RFC 7748 표준에 따른 비트 조작 과정을 거쳐 타원 곡선 연산의 안전성을 확보합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1767276165566&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// IDA Pro 정적 분석 데이터 기반 재구성
client_private[0] &amp;amp;= 0xF8;      // 하위 3비트 클리어 (Small Subgroup 공격 방지)
client_private[31] &amp;amp;= 0x7F;     // 최상위 비트 클리어
client_private[31] |= 0x40;     // 비트 6 설정 (표준 X25519 형식)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.2.2 SHA-512 기반 키 추출 결함&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성된 공유 비밀은 SHA-512 해시 함수를 통해 확장됩니다. 이 과정에서 AES 키와 CTR 카운터가 인접하게 배치됩니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;AES-128 Key :&lt;/b&gt; hash_output[0:16]&lt;/li&gt;
&lt;li&gt;&lt;b&gt;CTR Counter :&lt;/b&gt; hash_output[16:32] (Big-endian)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.3 파일 처리 및 I/O 아키텍처&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Lynx는 대규모 엔터프라이즈 환경을 타겟팅하므로, 효율적인 파일 처리를 위해 &lt;b&gt;OVERLAPPED I/O&lt;/b&gt;와 &lt;b&gt;워커 스레드 모델&lt;/b&gt;을 사용합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;작은 파일 (Case 2) :&lt;/b&gt; 직접 메타데이터를 삽입하고 즉시 처리.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;큰 파일 (Case 3) :&lt;/b&gt; 매직 바이트 체크 후 IO 완료 포트에 큐잉하여 백그라운드에서 병렬 암호화.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;메타데이터 삽입 :&lt;/b&gt; 암호화가 완료된 파일 끝에 클라이언트 공개키와 식별 문자열(&quot;LYNX&quot;)을 포함한 &lt;b&gt;116바이트&lt;/b&gt;를 추가 기록합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 4.4 정적 분석&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;랜덤 키 생성 (32바이트)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1515&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cYqoxW/dJMcagKWfY9/Fs0Qfw1OWcW3bHrUYUMoYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cYqoxW/dJMcagKWfY9/Fs0Qfw1OWcW3bHrUYUMoYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cYqoxW/dJMcagKWfY9/Fs0Qfw1OWcW3bHrUYUMoYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYqoxW%2FdJMcagKWfY9%2FFs0Qfw1OWcW3bHrUYUMoYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1515&quot; height=&quot;540&quot; data-origin-width=&quot;1515&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;181&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ncLug/dJMcahQBQb6/ZKPHTjzmHSxU0WncYOfSV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ncLug/dJMcahQBQb6/ZKPHTjzmHSxU0WncYOfSV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ncLug/dJMcahQBQb6/ZKPHTjzmHSxU0WncYOfSV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FncLug%2FdJMcahQBQb6%2FZKPHTjzmHSxU0WncYOfSV1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1510&quot; height=&quot;181&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;181&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Curve25519 키 클램핑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;336&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btG0WF/dJMcagc6jlP/VOG9sfuqfz1U09xKKUTPWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btG0WF/dJMcagc6jlP/VOG9sfuqfz1U09xKKUTPWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btG0WF/dJMcagc6jlP/VOG9sfuqfz1U09xKKUTPWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtG0WF%2FdJMcagc6jlP%2FVOG9sfuqfz1U09xKKUTPWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1512&quot; height=&quot;336&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;336&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ECDH 키 교환 (공유 비밀 생성)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1523&quot; data-origin-height=&quot;602&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvHyyT/dJMcacuZQwn/WZwlXW0EQR9uzX9I9JJ0h1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvHyyT/dJMcacuZQwn/WZwlXW0EQR9uzX9I9JJ0h1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvHyyT/dJMcacuZQwn/WZwlXW0EQR9uzX9I9JJ0h1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvHyyT%2FdJMcacuZQwn%2FWZwlXW0EQR9uzX9I9JJ0h1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1523&quot; height=&quot;602&quot; data-origin-width=&quot;1523&quot; data-origin-height=&quot;602&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공격자 공개키 하드코딩&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1343&quot; data-origin-height=&quot;17&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHx9yS/dJMcagEbrUw/zFhWiXEUHaQvnQAqoXkPOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHx9yS/dJMcagEbrUw/zFhWiXEUHaQvnQAqoXkPOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHx9yS/dJMcagEbrUw/zFhWiXEUHaQvnQAqoXkPOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHx9yS%2FdJMcagEbrUw%2FzFhWiXEUHaQvnQAqoXkPOk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1343&quot; height=&quot;17&quot; data-origin-width=&quot;1343&quot; data-origin-height=&quot;17&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5EXeK/dJMcaacShyy/uyrWcjx3bpVyOtKGeD84d1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5EXeK/dJMcaacShyy/uyrWcjx3bpVyOtKGeD84d1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5EXeK/dJMcaacShyy/uyrWcjx3bpVyOtKGeD84d1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5EXeK%2FdJMcaacShyy%2FuyrWcjx3bpVyOtKGeD84d1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;772&quot; height=&quot;20&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;20&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SHA-512 Hash 함수 (키 파생)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1511&quot; data-origin-height=&quot;478&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhxQwH/dJMcaacShyX/WsQeM2TjIxKa1xO8WdEWok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhxQwH/dJMcaacShyX/WsQeM2TjIxKa1xO8WdEWok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhxQwH/dJMcaacShyX/WsQeM2TjIxKa1xO8WdEWok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhxQwH%2FdJMcaacShyX%2FWsQeM2TjIxKa1xO8WdEWok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1511&quot; height=&quot;478&quot; data-origin-width=&quot;1511&quot; data-origin-height=&quot;478&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SHA-512 업데이트 함수&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1511&quot; data-origin-height=&quot;598&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzAOFj/dJMcaajEejv/KOik63KOkCobRm2uiXF9pk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzAOFj/dJMcaajEejv/KOik63KOkCobRm2uiXF9pk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzAOFj/dJMcaajEejv/KOik63KOkCobRm2uiXF9pk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzAOFj%2FdJMcaajEejv%2FKOik63KOkCobRm2uiXF9pk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1511&quot; height=&quot;598&quot; data-origin-width=&quot;1511&quot; data-origin-height=&quot;598&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1505&quot; data-origin-height=&quot;626&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYQmhw/dJMcabiyHtk/CZvYOoLKIoEMjf5hZfPnM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYQmhw/dJMcabiyHtk/CZvYOoLKIoEMjf5hZfPnM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYQmhw/dJMcabiyHtk/CZvYOoLKIoEMjf5hZfPnM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYQmhw%2FdJMcabiyHtk%2FCZvYOoLKIoEMjf5hZfPnM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1505&quot; height=&quot;626&quot; data-origin-width=&quot;1505&quot; data-origin-height=&quot;626&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SHA-512 압축 함수&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1513&quot; data-origin-height=&quot;457&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DrLJq/dJMcacPioGo/V157eXDA5CVlA8syWi2cK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DrLJq/dJMcacPioGo/V157eXDA5CVlA8syWi2cK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DrLJq/dJMcacPioGo/V157eXDA5CVlA8syWi2cK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDrLJq%2FdJMcacPioGo%2FV157eXDA5CVlA8syWi2cK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1513&quot; height=&quot;457&quot; data-origin-width=&quot;1513&quot; data-origin-height=&quot;457&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1508&quot; data-origin-height=&quot;460&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFPTxZ/dJMcacV3Je7/t7oGosZPbPsE924ntbhxYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFPTxZ/dJMcacV3Je7/t7oGosZPbPsE924ntbhxYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFPTxZ/dJMcacV3Je7/t7oGosZPbPsE924ntbhxYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFPTxZ%2FdJMcacV3Je7%2Ft7oGosZPbPsE924ntbhxYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1508&quot; height=&quot;460&quot; data-origin-width=&quot;1508&quot; data-origin-height=&quot;460&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1515&quot; data-origin-height=&quot;178&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eh38pn/dJMcacuZQxb/b2lSukPuzHPmUu3ILknTFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eh38pn/dJMcacuZQxb/b2lSukPuzHPmUu3ILknTFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eh38pn/dJMcacuZQxb/b2lSukPuzHPmUu3ILknTFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Feh38pn%2FdJMcacuZQxb%2Fb2lSukPuzHPmUu3ILknTFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1515&quot; height=&quot;178&quot; data-origin-width=&quot;1515&quot; data-origin-height=&quot;178&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;패딩 추가 및 해시 출력 (64바이트)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1511&quot; data-origin-height=&quot;478&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/demcxA/dJMcabiyHtR/kTdRAEs3jakJWkeT5gPKK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/demcxA/dJMcabiyHtR/kTdRAEs3jakJWkeT5gPKK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/demcxA/dJMcabiyHtR/kTdRAEs3jakJWkeT5gPKK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdemcxA%2FdJMcabiyHtR%2FkTdRAEs3jakJWkeT5gPKK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1511&quot; height=&quot;478&quot; data-origin-width=&quot;1511&quot; data-origin-height=&quot;478&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;77&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHsIo4/dJMcabJDukG/rrzypXhgmB0hdF2dke1Or0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHsIo4/dJMcabJDukG/rrzypXhgmB0hdF2dke1Or0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHsIo4/dJMcabJDukG/rrzypXhgmB0hdF2dke1Or0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHsIo4%2FdJMcabJDukG%2FrrzypXhgmB0hdF2dke1Or0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1512&quot; height=&quot;77&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;77&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AES 키 확장 (10라운드)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1511&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lvJMd/dJMcadUVcvr/rJ8jOGgQMkLkK0ZoRZV7R1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lvJMd/dJMcadUVcvr/rJ8jOGgQMkLkK0ZoRZV7R1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lvJMd/dJMcadUVcvr/rJ8jOGgQMkLkK0ZoRZV7R1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlvJMd%2FdJMcadUVcvr%2FrJ8jOGgQMkLkK0ZoRZV7R1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1511&quot; height=&quot;300&quot; data-origin-width=&quot;1511&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1508&quot; data-origin-height=&quot;518&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bleIuM/dJMcagKWfZS/qQPqYAWalmuWweKEsUAeLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bleIuM/dJMcagKWfZS/qQPqYAWalmuWweKEsUAeLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bleIuM/dJMcagKWfZS/qQPqYAWalmuWweKEsUAeLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbleIuM%2FdJMcagKWfZS%2FqQPqYAWalmuWweKEsUAeLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1508&quot; height=&quot;518&quot; data-origin-width=&quot;1508&quot; data-origin-height=&quot;518&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AES 암호화 (AES-128-CTR)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1513&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bncQr9/dJMcaiWfoe3/e2Z3mjcydmsKIszkL3eIbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bncQr9/dJMcaiWfoe3/e2Z3mjcydmsKIszkL3eIbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bncQr9/dJMcaiWfoe3/e2Z3mjcydmsKIszkL3eIbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbncQr9%2FdJMcaiWfoe3%2Fe2Z3mjcydmsKIszkL3eIbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1513&quot; height=&quot;380&quot; data-origin-width=&quot;1513&quot; data-origin-height=&quot;380&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1507&quot; data-origin-height=&quot;578&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPJxjZ/dJMcacod1R3/d8ofmMKNWtgfHsc0qdHGO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPJxjZ/dJMcacod1R3/d8ofmMKNWtgfHsc0qdHGO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPJxjZ/dJMcacod1R3/d8ofmMKNWtgfHsc0qdHGO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPJxjZ%2FdJMcacod1R3%2Fd8ofmMKNWtgfHsc0qdHGO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1507&quot; height=&quot;578&quot; data-origin-width=&quot;1507&quot; data-origin-height=&quot;578&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;557&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYA4I6/dJMcaiIHWDy/Z4JtDNv5VUUsu4hOAtIN6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYA4I6/dJMcaiIHWDy/Z4JtDNv5VUUsu4hOAtIN6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYA4I6/dJMcaiIHWDy/Z4JtDNv5VUUsu4hOAtIN6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYA4I6%2FdJMcaiIHWDy%2FZ4JtDNv5VUUsu4hOAtIN6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1510&quot; height=&quot;557&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;557&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 암호화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1513&quot; data-origin-height=&quot;278&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzLEqB/dJMcacaG0vP/E6WRkJ9JCSmSRwFKnUJ50K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzLEqB/dJMcacaG0vP/E6WRkJ9JCSmSRwFKnUJ50K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzLEqB/dJMcacaG0vP/E6WRkJ9JCSmSRwFKnUJ50K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzLEqB%2FdJMcacaG0vP%2FE6WRkJ9JCSmSRwFKnUJ50K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1513&quot; height=&quot;278&quot; data-origin-width=&quot;1513&quot; data-origin-height=&quot;278&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;477&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVlJ7C/dJMcaacShAg/K0UOXDTuR6gnKdPh3JxZA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVlJ7C/dJMcaacShAg/K0UOXDTuR6gnKdPh3JxZA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVlJ7C/dJMcaacShAg/K0UOXDTuR6gnKdPh3JxZA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVlJ7C%2FdJMcaacShAg%2FK0UOXDTuR6gnKdPh3JxZA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1512&quot; height=&quot;477&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;477&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s8Inm/dJMcacaG0v0/Aj2VvB5L2O3wLiA65HGe0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s8Inm/dJMcacaG0v0/Aj2VvB5L2O3wLiA65HGe0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s8Inm/dJMcacaG0v0/Aj2VvB5L2O3wLiA65HGe0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs8Inm%2FdJMcacaG0v0%2FAj2VvB5L2O3wLiA65HGe0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1510&quot; height=&quot;538&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;538&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBMtOG/dJMcadACDRQ/kx7nxxipnw5UqdX0hxPzx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBMtOG/dJMcadACDRQ/kx7nxxipnw5UqdX0hxPzx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBMtOG/dJMcadACDRQ/kx7nxxipnw5UqdX0hxPzx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBMtOG%2FdJMcadACDRQ%2Fkx7nxxipnw5UqdX0hxPzx0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1512&quot; height=&quot;600&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1767276487798&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;1. ECDH: shared_secret = curve25519(private_key, attacker_public_key)
2. KDF: hash = SHA512(shared_secret)  # 64바이트
3. 키 추출:
   - aes_key = hash[0:16]      # AES-128 마스터 키
   - counter = hash[16:32]     # CTR 초기 카운터
4. 키 확장: expanded_key = aes128_key_expansion(aes_key)  # 176바이트
5. 암호화: ciphertext = AES-128-CTR(plaintext, expanded_key, counter)
   - 1MB 청크 단위 처리
   - 마지막 116바이트는 암호화하지 않음
6. 메타데이터: 파일 끝에 116바이트 추가 (공개키, 해시, &quot;LYNX&quot;)
7. 파일명 변경: 원본.확장자 &amp;rarr; 원본.확장자.LYNX&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;601&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/K9P2L/dJMcaaDWDbP/TepWiHtxkHLXieLgEccEUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/K9P2L/dJMcaaDWDbP/TepWiHtxkHLXieLgEccEUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/K9P2L/dJMcaaDWDbP/TepWiHtxkHLXieLgEccEUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FK9P2L%2FdJMcaaDWDbP%2FTepWiHtxkHLXieLgEccEUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1512&quot; height=&quot;601&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;601&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1507&quot; data-origin-height=&quot;502&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lv18E/dJMcaaDWDbW/vCrae5cq1ox4QsAYfd7CKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lv18E/dJMcaaDWDbW/vCrae5cq1ox4QsAYfd7CKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lv18E/dJMcaaDWDbW/vCrae5cq1ox4QsAYfd7CKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flv18E%2FdJMcaaDWDbW%2FvCrae5cq1ox4QsAYfd7CKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1507&quot; height=&quot;502&quot; data-origin-width=&quot;1507&quot; data-origin-height=&quot;502&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x4KzQ/dJMcaiBVGTc/kjWYJTxjLOHNLRUMd72nhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x4KzQ/dJMcaiBVGTc/kjWYJTxjLOHNLRUMd72nhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x4KzQ/dJMcaiBVGTc/kjWYJTxjLOHNLRUMd72nhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx4KzQ%2FdJMcaiBVGTc%2FkjWYJTxjLOHNLRUMd72nhk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1512&quot; height=&quot;121&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;121&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;522&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxwx7T/dJMcadHo0i7/zUzFhHKiXTVW2jouMRVK8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxwx7T/dJMcadHo0i7/zUzFhHKiXTVW2jouMRVK8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxwx7T/dJMcadHo0i7/zUzFhHKiXTVW2jouMRVK8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcxwx7T%2FdJMcadHo0i7%2FzUzFhHKiXTVW2jouMRVK8k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1516&quot; height=&quot;522&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;522&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1767276534402&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[파일 처리 과정]
1. 파일 열기 및 크기 확인
   &amp;darr;
2. ECDH 키 교환
   - 랜덤 개인키 생성
   - 공유 비밀 계산
   - SHA-512로 키 파생
   &amp;darr;
3. AES 키 준비
   - 마스터 키: hash[0:16]
   - CTR 카운터: hash[16:32]
   - 확장 키: 176바이트
   &amp;darr;
4. OVERLAPPED 구조체 구성
   - 파일 정보
   - 암호화 키/카운터
   - 메타데이터 (116바이트)
   &amp;darr;
5. IO 완료 포트에 큐잉
   - 작은 파일: 케이스 2 (직접 메타데이터)
   - 큰 파일: 케이스 3 (매직 바이트 체크)
   &amp;darr;
6. 워커 스레드가 처리
   (encryption_worker_thread)
   
[출력]
원본파일명.LYNX (암호화된 파일)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 5. 복호화 기술 분석 (Decryption Strategy)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.1 세션 키 복구 메커니즘&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Lynx의 유일한 암호학적 약점은 &lt;b&gt;세션 키의 원천이 되는 32바이트 난수&lt;/b&gt;가 생성 직후 메모리에 평문으로 남거나, API 모니터링을 통해 탈취 가능하다는 점입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1767276567798&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def derive_lynx_keys(captured_seed):
    # 1. Clamping 수행 (X25519 표준)
    private_key = bytearray(captured_seed)
    private_key[0] &amp;amp;= 248
    private_key[31] = (private_key[31] &amp;amp; 127) | 64
    
    # 2. 공유 비밀 도출
    server_pub = x25519.X25519PublicKey.from_public_bytes(ATTACKER_PUB_KEY)
    shared_secret = x25519.X25519PrivateKey.from_private_bytes(private_key).exchange(server_pub)
    
    # 3. SHA-512 해시에서 키셋 분리
    kdf_output = hashlib.sha512(shared_secret).digest()
    return kdf_output[:16], kdf_output[16:32] # AES_KEY, COUNTER&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.2 무결성 검증&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복구된 키의 유효성을 판단하기 위해 파일 헤더 시그니처를 대조합니다.&lt;span style=&quot;background-color: #e9eef6; color: #1f1f1f; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;b&gt;파일 유형&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;b&gt;매직 넘버 (Hex)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;EXE/DLL&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;4D 5A&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;윈도우 실행 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;ZIP/DOCX&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;50 4B 03 04&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;압축 파일 및 MS 오피스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;PNG&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;89 50 4E 47&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;이미지 파일 시그니처&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 6. 요&lt;span data-token-index=&quot;0&quot;&gt;약 및 결론 (Conclusion)&lt;/span&gt; &lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.1 최종 평가&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Lynx 랜섬웨어는 Curve25519와 SHA-512를 결합하여 암호학적으로 매우 견고하게 설계되었습니다. 하지만 &lt;b&gt;세션 키 생성의 기점이 되는 32바이트 시드 값&lt;/b&gt;이 메모리상에 노출될 수 있다는 점이 복구의 핵심 실마리입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;다운로드 (2).svg&quot; data-origin-width=&quot;1115&quot; data-origin-height=&quot;1173&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDbJxF/dJMcabQnRzh/7ooaFLTvcfuo9vnBk8CJz1/tfile.svg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDbJxF/dJMcabQnRzh/7ooaFLTvcfuo9vnBk8CJz1/tfile.svg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDbJxF/dJMcabQnRzh/7ooaFLTvcfuo9vnBk8CJz1/tfile.svg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDbJxF%2FdJMcabQnRzh%2F7ooaFLTvcfuo9vnBk8CJz1%2Ftfile.svg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1115&quot; height=&quot;1173&quot; data-filename=&quot;다운로드 (2).svg&quot; data-origin-width=&quot;1115&quot; data-origin-height=&quot;1173&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.2 대응 가이드&lt;/b&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;초동 조치 :&lt;/b&gt; 감염 발생 즉시 시스템을 종료하지 말고, &lt;b&gt;메모리 덤프(Full Memory Dump)&lt;/b&gt;를 수행하여 &lt;b&gt;CryptGenRandom&lt;/b&gt;에 의해 생성된 난수 시퀀스를 확보해야 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;모니터링 강화 :&lt;/b&gt; &lt;b&gt;Curve25519&lt;/b&gt;, &lt;b&gt;SHA-512&lt;/b&gt;, &lt;b&gt;AES-CTR&lt;/b&gt; 관련 암호 라이브러리를 빈번하게 호출하거나 파일 끝에 116바이트의 고정 데이터를 쓰는 프로세스를 탐지하도록 EDR 정책을 최적화하십시오.&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>랜섬웨어 분석 보고서</category>
      <author>geonwoo9643</author>
      <guid isPermaLink="true">https://mzcompany.tistory.com/10</guid>
      <comments>https://mzcompany.tistory.com/10#entry10comment</comments>
      <pubDate>Thu, 1 Jan 2026 23:24:24 +0900</pubDate>
    </item>
    <item>
      <title>Mamona 랜섬웨어 분석 보고서</title>
      <link>https://mzcompany.tistory.com/9</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; &lt;span data-token-index=&quot;0&quot;&gt;1. 개요 (Overview)&lt;/span&gt; &lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.1 분석 배경&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Mamona&lt;/b&gt; 랜섬웨어(Mammon 변종)는 비대칭 암호화 기술인 &lt;b&gt;X25519&lt;/b&gt;와 커스텀 스트림 암호인 &lt;b&gt;HC-128&lt;/b&gt;을 결합한 고도의 하이브리드 공격 도구다. 표준 알고리즘의 초기화 루틴을 의도적으로 변형하여 일반적인 복구 도구의 접근을 차단하며, 주로 기업 내부망을 타겟팅하여 데이터 복구를 무력화하는 기만술을 구사한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.2 핵심 요약&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;하이브리드 암호 체계 :&lt;/b&gt; &lt;b&gt;X25519&lt;/b&gt;를 통한 세션 키 교환과 고성능 &lt;b&gt;HC-128&lt;/b&gt; 스트림 암호를 결합하여 보안성과 속도를 동시에 확보했다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;커스텀 암호 엔진 :&lt;/b&gt; 표준 HC-128의 초기화 절차를 &lt;b&gt;SHA-256 기반 확장 루틴&lt;/b&gt;으로 재설계하여 분석가의 알고리즘 식별 및 복구 시도를 방해한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;치명적 설계 결함&lt;/b&gt; &lt;b&gt;:&lt;/b&gt; 암호화의 원천이 되는 피해자 개인키가 &lt;b&gt;CryptGenRandom API 호출 시점에 평문(Plaintext) 상태로 노출&lt;/b&gt;되는 결함이 존재하여, 메모리/로그 포렌식을 통한 데이터 복구가 가능하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; &lt;span data-token-index=&quot;0&quot;&gt;2. 식별 정보 (Identification)&lt;/span&gt; &lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Malware Family&lt;/b&gt;: Mamona (Mammon Variant)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Filetype&lt;/b&gt;: PE32 (Windows Executable)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Hash (SHA256)&lt;/b&gt;: c5f49c0f566a114b529138f8bd222865c9fa9fa95f96ec1ded50700764a1d4e7&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Extension&lt;/b&gt;: .HAes 또는 .crypt&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Target&lt;/b&gt;: Windows Environment&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 3. 분석 환경 및 도구 (Tools)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 80px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;&lt;b&gt;도구명 (Tool)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;&lt;b&gt;용도 (Purpose)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;정적 분석&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;IDA Pro&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;바이너리 디스어셈블리 및 커스텀 HC-128 로직 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;행위 분석&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;Hooking Log&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;API 호출 모니터링 및 CryptGenRandom 기반 키 후보군 추출&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;검증 도구&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;Python&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;X25519/HC-128 복구 엔진 구현 및 자동 복호화 검증 (PoC)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 4. 암호화 기술 분석 (Technical Analysis)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.1 키 생성 및 관리&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Mamona는 하이브리드 암호화 방식을 사용하여 매 실행 시 고유한 키를 생성한다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;X25519 기반 ECDH :&lt;/b&gt; 피해자 시스템에서 생성된 32바이트 임시 개인키와 공격자의 하드코딩된 공개키를 사용하여 &lt;b&gt;Shared Secret(공유 비밀값)&lt;/b&gt;을 생성한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SHA-512 기반 KDF :&lt;/b&gt; 생성된 공유 비밀값을 &lt;b&gt;SHA-512&lt;/b&gt; 해시 알고리즘에 통과시켜 64바이트 마스터 키를 도출한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;대칭키 할당 :&lt;/b&gt; 마스터 키의 상위 32바이트는 &lt;b&gt;HC-128 Key&lt;/b&gt;로, 하위 32바이트는 &lt;b&gt;IV(초기화 벡터)&lt;/b&gt;로 할당되어 엔진에 로드된다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.2 커스텀 HC-128 엔진 분석&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분석 방해를 위해 표준 HC-128의 내부를 다음과 같이 개조하였다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;변형된 초기화 (sub_4085E0) :&lt;/b&gt; Key와 IV를 &lt;b&gt;state[1057..1072]&lt;/b&gt; 영역에 배치하며, 비트 길이를 명시적으로 기록하는 독자적인 구조를 가진다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SHA-256 기반 테이블 확장 :&lt;/b&gt; 표준 Seed 초기화 대신 &lt;b&gt;SHA-256의 메시지 확장 패턴&lt;/b&gt;(&lt;i&gt;\sigma_0, \sigma_1&lt;/i&gt; 연산)을 적용하여 초기 P/Q 테이블(각 512워드)을 생성한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;라운드 연산 및 스트림 생성 :&lt;/b&gt; 64회의 초기 라운드를 통해 테이블을 균질화한 후, 64바이트 단위의 키스트림을 생성하여 원본 데이터와 XOR한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.3 파일 처리 및 부분 암호화 정책&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;I/O 효율성을 극대화하기 위해 파일 크기에 따라 암호화 범위를 차등 적용한다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;파일 크기 범위&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;암호화 정책&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;상세 방식&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5MB 이하&lt;/td&gt;
&lt;td&gt;전체 암호화&lt;/td&gt;
&lt;td&gt;파일 전체 영역 파괴&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5MB ~ 20MB&lt;/td&gt;
&lt;td&gt;부분 스트라이핑&lt;/td&gt;
&lt;td&gt;6개 구간에 대해 각 4KB씩 암호화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20MB 초과&lt;/td&gt;
&lt;td&gt;고속 암호화&lt;/td&gt;
&lt;td&gt;10MB 간격으로 4KB씩 암호화 (최대 70MB)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; &lt;span data-token-index=&quot;0&quot;&gt;4.4 정적 분석&lt;/span&gt; &lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 암호화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;520&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bV4bYT/dJMcadACymz/kziYWynWCWmBB0w6mVXYMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bV4bYT/dJMcadACymz/kziYWynWCWmBB0w6mVXYMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bV4bYT/dJMcadACymz/kziYWynWCWmBB0w6mVXYMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbV4bYT%2FdJMcadACymz%2FkziYWynWCWmBB0w6mVXYMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1510&quot; height=&quot;520&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;520&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Curve25519 키 교환 함수 (공유 비밀 생성)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;461&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yak6Y/dJMcagRGPZW/lc5tvOOKK8q3m7k6cNc7xk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yak6Y/dJMcagRGPZW/lc5tvOOKK8q3m7k6cNc7xk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yak6Y/dJMcagRGPZW/lc5tvOOKK8q3m7k6cNc7xk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fyak6Y%2FdJMcagRGPZW%2Flc5tvOOKK8q3m7k6cNc7xk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1532&quot; height=&quot;461&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;461&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SHA256 Hash 함수 (32바이트 마스터키 생성)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1533&quot; data-origin-height=&quot;497&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkfAwZ/dJMcagxnWie/exFbzxe8o0WWE5Y90bcxo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkfAwZ/dJMcagxnWie/exFbzxe8o0WWE5Y90bcxo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkfAwZ/dJMcagxnWie/exFbzxe8o0WWE5Y90bcxo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkfAwZ%2FdJMcagxnWie%2FexFbzxe8o0WWE5Y90bcxo1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1533&quot; height=&quot;497&quot; data-origin-width=&quot;1533&quot; data-origin-height=&quot;497&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HC-128 내부 상태 배열 설정 (256-bit Key)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1531&quot; data-origin-height=&quot;518&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UZD4I/dJMcadgkasF/BKOm86UzbeEUbLH5HnWq51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UZD4I/dJMcadgkasF/BKOm86UzbeEUbLH5HnWq51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UZD4I/dJMcadgkasF/BKOm86UzbeEUbLH5HnWq51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUZD4I%2FdJMcadgkasF%2FBKOm86UzbeEUbLH5HnWq51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1531&quot; height=&quot;518&quot; data-origin-width=&quot;1531&quot; data-origin-height=&quot;518&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1767256319214&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;state[1057..1064] &amp;larr; Key (8 words)
state[1065..1072] &amp;larr; IV  (8 words)
state[1073]       &amp;larr; Key 비트 길이 (256)
state[1074]       &amp;larr; IV 비트 길이  (256)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HC-128 내부 상태 배열 설정 (256-bit IV) 및 P/Q 테이블 초기화 (각 512워드)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;603&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HK7SQ/dJMcafytQI6/wxiU0Wd05v0RHz7uIXfLR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HK7SQ/dJMcafytQI6/wxiU0Wd05v0RHz7uIXfLR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HK7SQ/dJMcafytQI6/wxiU0Wd05v0RHz7uIXfLR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHK7SQ%2FdJMcafytQI6%2FwxiU0Wd05v0RHz7uIXfLR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1510&quot; height=&quot;603&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;603&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;441&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRREHk/dJMcafytQJa/k3uUwzVS4akU4t7tmQtd5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRREHk/dJMcafytQJa/k3uUwzVS4akU4t7tmQtd5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRREHk/dJMcafytQJa/k3uUwzVS4akU4t7tmQtd5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRREHk%2FdJMcafytQJa%2Fk3uUwzVS4akU4t7tmQtd5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1512&quot; height=&quot;441&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;441&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HC-128 스트림 암호화 함수&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1508&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2y3eh/dJMcadUU6Wn/2pFp4WOuswRY6VyTpdiKDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2y3eh/dJMcadUU6Wn/2pFp4WOuswRY6VyTpdiKDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2y3eh/dJMcadUU6Wn/2pFp4WOuswRY6VyTpdiKDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2y3eh%2FdJMcadUU6Wn%2F2pFp4WOuswRY6VyTpdiKDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1508&quot; height=&quot;600&quot; data-origin-width=&quot;1508&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1511&quot; data-origin-height=&quot;616&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1hKBI/dJMcadUU6Wr/RV1CQU4bmwMlwPNCzjA9p0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1hKBI/dJMcadUU6Wr/RV1CQU4bmwMlwPNCzjA9p0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1hKBI/dJMcadUU6Wr/RV1CQU4bmwMlwPNCzjA9p0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1hKBI%2FdJMcadUU6Wr%2FRV1CQU4bmwMlwPNCzjA9p0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1511&quot; height=&quot;616&quot; data-origin-width=&quot;1511&quot; data-origin-height=&quot;616&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HC-128 키스트림 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBQKH6/dJMcah38t6H/Z7gSfr7ubJwXu2vufkFPyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBQKH6/dJMcah38t6H/Z7gSfr7ubJwXu2vufkFPyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBQKH6/dJMcah38t6H/Z7gSfr7ubJwXu2vufkFPyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBQKH6%2FdJMcah38t6H%2FZ7gSfr7ubJwXu2vufkFPyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1512&quot; height=&quot;200&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;137&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/urXvK/dJMcaivakNC/iIr2NpoLopz7tvbCeJWsz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/urXvK/dJMcaivakNC/iIr2NpoLopz7tvbCeJWsz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/urXvK/dJMcaivakNC/iIr2NpoLopz7tvbCeJWsz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FurXvK%2FdJMcaivakNC%2FiIr2NpoLopz7tvbCeJWsz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1516&quot; height=&quot;137&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;137&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kQScB/dJMcaivakNH/nYCAMPZ9KBxgB0KVcimvM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kQScB/dJMcaivakNH/nYCAMPZ9KBxgB0KVcimvM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kQScB/dJMcaivakNH/nYCAMPZ9KBxgB0KVcimvM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkQScB%2FdJMcaivakNH%2FnYCAMPZ9KBxgB0KVcimvM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1512&quot; height=&quot;198&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;198&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1508&quot; data-origin-height=&quot;82&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSMu70/dJMcaaxbdGc/rkshMumjxTzvKBwAJzIYA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSMu70/dJMcaaxbdGc/rkshMumjxTzvKBwAJzIYA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSMu70/dJMcaaxbdGc/rkshMumjxTzvKBwAJzIYA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSMu70%2FdJMcaaxbdGc%2FrkshMumjxTzvKBwAJzIYA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1508&quot; height=&quot;82&quot; data-origin-width=&quot;1508&quot; data-origin-height=&quot;82&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 크기에 따른 암호화 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;596&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfmota/dJMcaiPsYus/jqCdEkeOCNwKGwq4PEjePK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfmota/dJMcaiPsYus/jqCdEkeOCNwKGwq4PEjePK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfmota/dJMcaiPsYus/jqCdEkeOCNwKGwq4PEjePK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbfmota%2FdJMcaiPsYus%2FjqCdEkeOCNwKGwq4PEjePK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1512&quot; height=&quot;596&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;596&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1508&quot; data-origin-height=&quot;577&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c5akbu/dJMcaajD8SG/Z1njdkN2E4AfSOlGbxGOgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c5akbu/dJMcaajD8SG/Z1njdkN2E4AfSOlGbxGOgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c5akbu/dJMcaajD8SG/Z1njdkN2E4AfSOlGbxGOgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc5akbu%2FdJMcaajD8SG%2FZ1njdkN2E4AfSOlGbxGOgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1508&quot; height=&quot;577&quot; data-origin-width=&quot;1508&quot; data-origin-height=&quot;577&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;281&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dJxWfW/dJMcahXoleg/vEIG0tgVU8xLuW4XZ3z9nK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dJxWfW/dJMcahXoleg/vEIG0tgVU8xLuW4XZ3z9nK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dJxWfW/dJMcahXoleg/vEIG0tgVU8xLuW4XZ3z9nK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdJxWfW%2FdJMcahXoleg%2FvEIG0tgVU8xLuW4XZ3z9nK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1512&quot; height=&quot;281&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;281&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1508&quot; data-origin-height=&quot;580&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c5pYFb/dJMcahXoler/pYxofxaYsPJzKCCpWWW3qK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c5pYFb/dJMcahXoler/pYxofxaYsPJzKCCpWWW3qK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c5pYFb/dJMcahXoler/pYxofxaYsPJzKCCpWWW3qK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc5pYFb%2FdJMcahXoler%2FpYxofxaYsPJzKCCpWWW3qK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1508&quot; height=&quot;580&quot; data-origin-width=&quot;1508&quot; data-origin-height=&quot;580&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;파일 크기&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;a3 = 1 (부분 암호화)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;a3 = 0 (전체/퍼센트)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;le; 64 bytes&lt;/td&gt;
&lt;td&gt;전체&lt;/td&gt;
&lt;td&gt;전체&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;65B ~ 5MB&lt;/td&gt;
&lt;td&gt;앞부분 10%&lt;/td&gt;
&lt;td&gt;전체&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5MB ~ 20MB&lt;/td&gt;
&lt;td&gt;6개 구간 &amp;times; 4KB&lt;/td&gt;
&lt;td&gt;a2% (최대 70MB)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt; 20MB&lt;/td&gt;
&lt;td&gt;10MB 간격 &amp;times; 4KB&lt;/td&gt;
&lt;td&gt;a2% (최대 70MB)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 5. 복호화 기술 분석 (Decryption Strategy)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.1 복구 키 확보 방안&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;암호화의 핵심인 &lt;b&gt;피해자 임시 개인키(32바이트)&lt;/b&gt;는 &lt;b&gt;CryptGenRandom&lt;/b&gt; API 호출을 통해 생성된다. 이 시점에 후킹 도구나 메모리 덤프를 활용하면 평문 상태의 키 후보군을 확보할 수 있다. 확보된 개인키와 공격자의 공개키를 조합하면 세션 키를 재구성할 수 있다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.2 복호화 알고리즘 구현&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확보된 키와 변형된 엔진 구조를 재현하여 데이터를 복구하는 핵심 로직이다.&lt;/p&gt;
&lt;pre id=&quot;code_1767256595677&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# [코드 5-1] X25519 및 SHA-512 KDF를 통한 마스터 키 도출
def derive_keys(victim_priv, attacker_pub):
    # ECDH 공유 비밀값 생성
    shared = x25519(victim_priv, attacker_pub)
    # SHA-512 기반 Key(32B) / IV(32B) 분리
    master = hashlib.sha512(shared).digest()
    return master[:32], master[32:64]

# [코드 5-2] 커스텀 HC-128 복호화 엔진 구현 (PoC)
def decrypt_hc128(cipher, key_hex, iv_hex):
    state = alloc_state()
    # 변형된 초기화 루틴 (SHA-256 확장 적용)
    sub_4085E0(state, key_words, 256, 256)
    sub_408220(state, iv_words)
    
    # 파일 크기별 부분 암호화 길이에 맞춰 XOR 복호화
    dec_len = compute_partial_length(len(cipher))
    return sub_408650(state, cipher, dec_len)&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.3 무결성 검증 및 자동화 (Integrity Check)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추출된 여러 키 후보군 중 정답을 식별하기 위해 파일 헤더의 시그니처를 검증한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;검증 대상 :&lt;/b&gt; PNG (&lt;b&gt;\x89PNG&lt;/b&gt;), JPEG (&lt;b&gt;\xFF\xD8\xFF&lt;/b&gt;), ZIP/Office (&lt;b&gt;PK\x03\x04&lt;/b&gt;), PDF (&lt;b&gt;%PDF&lt;/b&gt;)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;프로세스 :&lt;/b&gt; 각 개인키 후보로 복호화 시도 &amp;rarr; 헤더 매직 넘버 대조 &amp;rarr; 일치 시 복구 확정.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; &lt;span data-token-index=&quot;0&quot;&gt;6. 요약 및 결론 (Conclusion)&lt;/span&gt; &lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.1 암호화 워크플로우&lt;/b&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;초기화 :&lt;/b&gt; 뮤텍스 생성 및 중복 실행 방지.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;키 생성 :&lt;/b&gt; &lt;b&gt;CryptGenRandom&lt;/b&gt;으로 피해자 개인키 생성 --&amp;gt; &lt;b&gt;X25519 ECDH&lt;/b&gt; --&amp;gt; &lt;b&gt;SHA-512 KDF&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;암호화 :&lt;/b&gt; 커스텀 HC-128 엔진 가동, 파일 크기별 스트라이핑 정책 적용.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;완료&lt;/b&gt; &lt;b&gt;:&lt;/b&gt; 확장자 변경(&lt;b&gt;.HAes&lt;/b&gt; / &lt;b&gt;.crypt&lt;/b&gt;) 및 결과 저장.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;다운로드 (1).svg&quot; data-origin-width=&quot;958&quot; data-origin-height=&quot;2440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t1KxU/dJMcagjQ7FS/ICXxrdCtBfxMfNWL7nak3K/tfile.svg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t1KxU/dJMcagjQ7FS/ICXxrdCtBfxMfNWL7nak3K/tfile.svg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t1KxU/dJMcagjQ7FS/ICXxrdCtBfxMfNWL7nak3K/tfile.svg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft1KxU%2FdJMcagjQ7FS%2FICXxrdCtBfxMfNWL7nak3K%2Ftfile.svg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;428&quot; height=&quot;1090&quot; data-filename=&quot;다운로드 (1).svg&quot; data-origin-width=&quot;958&quot; data-origin-height=&quot;2440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6.2 최종 평가&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Mamona 랜섬웨어는 알고리즘 변조를 통해 분석을 어렵게 설계하였으나, &lt;b&gt;키 생성 과정에서의 개인키 노출&lt;/b&gt;이라는 결정적인 설계 결함을 가지고 있다. 침해 사고 발생 시 시스템을 재부팅하지 않고 후킹 로그 또는 메모리 덤프를 확보한다면, 본 보고서에서 제시한 &lt;b&gt;자동 복호화 모델&lt;/b&gt;을 통해 원본 데이터를 온전히 복원할 수 있다.&lt;/p&gt;</description>
      <category>랜섬웨어 분석 보고서</category>
      <author>geonwoo9643</author>
      <guid isPermaLink="true">https://mzcompany.tistory.com/9</guid>
      <comments>https://mzcompany.tistory.com/9#entry9comment</comments>
      <pubDate>Thu, 1 Jan 2026 23:24:13 +0900</pubDate>
    </item>
    <item>
      <title>WannaCry 랜섬웨어 분석 보고서</title>
      <link>https://mzcompany.tistory.com/8</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 1. 개요 (Overview)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.1 분석 배경&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WannaCry는 2017년 전 세계적으로 대규모 피해를 입힌 랜섬웨어로, &lt;b&gt;SMB 취약점(EternalBlue)&lt;/b&gt;을 통한 자가 전파 기능과 &lt;b&gt;AES + RSA&lt;/b&gt; 혼합 암호 구조를 사용한다. 특히 Windows CryptoAPI 호출 시 생성된 대칭키가 메모리에 평문으로 남는 구조적 결함을 이용하면 복구가 가능하다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.2 핵심 요약&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;동적 모듈 로딩 :&lt;/b&gt; 리소스 내부에 암호화된 상태로 존재하는 DLL을 실행 시점에 메모리에서 복구하여 실제 암호화 로직을 구동한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;하이브리드 암호화 :&lt;/b&gt; 파일별로 생성된 AES-128 키를 사용자용 RSA-2048 공개키로 보호하는 다층 구조를 채택하고 있다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;추출 데이터 기반 복구 :&lt;/b&gt; 키 생성 API 호출 시점을 가로채어 획득한 16바이트 대칭키 정보를 활용하면 공격자의 개인키 없이도 원본 데이터 복구가 가능하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 2. 식별 정보 (Identification)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Malware Family&lt;/b&gt;: WannaCry (WanaCrypt0r 2.0)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Filetype&lt;/b&gt;: PE32 (Windows Executable)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Hash (SHA256)&lt;/b&gt;: ed01ebfbc9eb5bbea545af4d01bf5f1071661840480439c6e5babe8e080e41aa&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Extension&lt;/b&gt;: .WNCRY&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Ransom Note&lt;/b&gt;: @Please_Read_Me@.txt&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Encryption&lt;/b&gt;: AES-128-CBC + RSA-2048&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 3. 분석 환경 및 도구 (Tools)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;도구명 (Tool)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;용도 (Purpose)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;정적 분석&lt;/td&gt;
&lt;td&gt;IDA Pro&lt;/td&gt;
&lt;td&gt;바이너리 디스어셈블리 및 주요 암호화 서브루틴 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;동적 분석&lt;/td&gt;
&lt;td&gt;x64dbg&lt;/td&gt;
&lt;td&gt;런타임 디버깅 및 메모리 내 키 데이터 추출&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;행위 분석&lt;/td&gt;
&lt;td&gt;Process Monitor&lt;/td&gt;
&lt;td&gt;파일 권한 변경 및 자가 복제 행위 추적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;검증 도구&lt;/td&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;td&gt;후킹 데이터 기반 복호화 로직 구현 및 시그니처 검증&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 암호화 기술 분석 (Technical Analysis)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.1 초기화 및 설치&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WannaCry는 실행 인자에 따라 동작 모드를 달리한다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;설치 모드 (i) :&lt;/b&gt; &lt;b&gt;CopyFileA&lt;/b&gt;를 통해 자기 자신을 복제하고 시스템 서비스로 등록을 시도한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;암호화 모드 (인자 없음) :&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;작업 디렉토리 설정(&lt;b&gt;SetCurrentDirectoryA&lt;/b&gt;)&lt;/li&gt;
&lt;li&gt;시스템 내 암호화 대상 파일 목록 수집&lt;/li&gt;
&lt;li&gt;파일 권한을 변경하여 모든 사용자가 수정 가능하도록 조작(&lt;b&gt;icacls&lt;/b&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.2 암호화 DLL 로더&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WannaCry의 실제 암호화 로직은 실행 파일 내부가 아닌, 리소스에 포함된 &lt;b&gt;t.wnry&lt;/b&gt; 파일(암호화된 DLL 컨테이너)에 존재한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;헤더 검증 :&lt;/b&gt; &quot;WANACRY!&quot; 매직 넘버 확인.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;키 복구 :&lt;/b&gt; 내부 저장된 RSA 개인키로 AES 키를 복호화하여 &lt;b&gt;t.wnry&lt;/b&gt; 내부의 DLL을 메모리 상에서 복구한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;실행 :&lt;/b&gt; 복구된 DLL 내의 암호화 함수 포인터를 획득하여 호출한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.3 키 생성 및 관리&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WannaCry는 다층 구조의 키 관리 체계를 가진다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;사용자 RSA 키쌍 생성 :&lt;/b&gt; &lt;b&gt;CryptGenKey&lt;/b&gt;를 통해 RSA-2048 키쌍(VPU/VPR)을 생성한다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;00000000.pky :&lt;/b&gt; 사용자 공개키 (Plaintext 저장)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;00000000.eky :&lt;/b&gt; 사용자 개인키 (공격자의 마스터 공개키로 암호화되어 저장)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;파일별 AES 키 생성 :&lt;/b&gt; 각 파일을 암호화할 때마다 &lt;b&gt;CryptGenRandom(16)&lt;/b&gt;을 호출하여 고유한 &lt;b&gt;AES-128&lt;/b&gt; 키를 생성한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4.4 파일 암호화 매커니즘&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 암호화 시 다음과 같은 구조로 데이터를 재구성한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;알고리즘 :&lt;/b&gt; AES-128-CBC (IV = 16바이트 Zero)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;파일 구조&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;0x00 :&lt;/b&gt; 매직 넘버 (&quot;WANACRY!&quot;)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;0x08 :&lt;/b&gt; RSA로 암호화된 AES 키 크기 (256바이트)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;0x0C :&lt;/b&gt; RSA(VPU)로 암호화된 AES 세션 키&lt;/li&gt;
&lt;li&gt;&lt;b&gt;0x110 :&lt;/b&gt; 원본 파일 크기 (8바이트)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;0x118 :&lt;/b&gt; AES-CBC로 암호화된 데이터&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 4.5 정적 분석&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실행 파일 경로 획득 / 고유한 랜덤 서비스명 생성 (컴퓨터별)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;40&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q35xf/dJMcahbZolL/k7caR0qfrAUzKq8vkgtLTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q35xf/dJMcahbZolL/k7caR0qfrAUzKq8vkgtLTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q35xf/dJMcahbZolL/k7caR0qfrAUzKq8vkgtLTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq35xf%2FdJMcahbZolL%2Fk7caR0qfrAUzKq8vkgtLTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1516&quot; height=&quot;40&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;40&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인자 여부에 따른 실행 모드 분기
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&amp;ldquo;-i&amp;rdquo; 인자가 있을 때 : 설치/서비스 모드&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1507&quot; data-origin-height=&quot;97&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIBJRd/dJMcajt3GyB/l0ufrIkWfXcl9ndRPN6sd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIBJRd/dJMcajt3GyB/l0ufrIkWfXcl9ndRPN6sd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIBJRd/dJMcajt3GyB/l0ufrIkWfXcl9ndRPN6sd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIBJRd%2FdJMcajt3GyB%2Fl0ufrIkWfXcl9ndRPN6sd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1507&quot; height=&quot;97&quot; data-origin-width=&quot;1507&quot; data-origin-height=&quot;97&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1451&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLbqTe/dJMcagqCeTt/wreYISQK4DPU8VgwgfKCoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLbqTe/dJMcagqCeTt/wreYISQK4DPU8VgwgfKCoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLbqTe/dJMcagqCeTt/wreYISQK4DPU8VgwgfKCoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLbqTe%2FdJMcagqCeTt%2FwreYISQK4DPU8VgwgfKCoK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1451&quot; height=&quot;18&quot; data-origin-width=&quot;1451&quot; data-origin-height=&quot;18&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치 디렉터리 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;523&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qq9fR/dJMcahQBxrD/9Zohnyb4C1608NDVeyR8gK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qq9fR/dJMcahQBxrD/9Zohnyb4C1608NDVeyR8gK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qq9fR/dJMcahQBxrD/9Zohnyb4C1608NDVeyR8gK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqq9fR%2FdJMcahQBxrD%2F9Zohnyb4C1608NDVeyR8gK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1532&quot; height=&quot;523&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;523&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;디렉토리에 Hidden + System 속성 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1531&quot; data-origin-height=&quot;342&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OFdSM/dJMcabW9LFm/3KdtTsVPKRvNnlKCaWDA31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OFdSM/dJMcabW9LFm/3KdtTsVPKRvNnlKCaWDA31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OFdSM/dJMcabW9LFm/3KdtTsVPKRvNnlKCaWDA31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOFdSM%2FdJMcabW9LFm%2F3KdtTsVPKRvNnlKCaWDA31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1531&quot; height=&quot;342&quot; data-origin-width=&quot;1531&quot; data-origin-height=&quot;342&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;tasksche.exe를 Windows 서비스로 등록하고 시작&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPvRC0/dJMb99LM4ri/5eZGdaQXoMHULfGh4Jzzi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPvRC0/dJMb99LM4ri/5eZGdaQXoMHULfGh4Jzzi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPvRC0/dJMb99LM4ri/5eZGdaQXoMHULfGh4Jzzi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPvRC0%2FdJMb99LM4ri%2F5eZGdaQXoMHULfGh4Jzzi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1532&quot; height=&quot;282&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;282&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1506&quot; data-origin-height=&quot;602&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UfS2Z/dJMcacodINq/5WZq7jUpqV8EcMgkX9EUQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UfS2Z/dJMcacodINq/5WZq7jUpqV8EcMgkX9EUQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UfS2Z/dJMcacodINq/5WZq7jUpqV8EcMgkX9EUQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUfS2Z%2FdJMcacodINq%2F5WZq7jUpqV8EcMgkX9EUQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1506&quot; height=&quot;602&quot; data-origin-width=&quot;1506&quot; data-origin-height=&quot;602&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1531&quot; data-origin-height=&quot;460&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/drFTUy/dJMcab3UVys/R1VtQUR4ZiItYTzhW8tGY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/drFTUy/dJMcab3UVys/R1VtQUR4ZiItYTzhW8tGY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/drFTUy/dJMcab3UVys/R1VtQUR4ZiItYTzhW8tGY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdrFTUy%2FdJMcab3UVys%2FR1VtQUR4ZiItYTzhW8tGY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1531&quot; height=&quot;460&quot; data-origin-width=&quot;1531&quot; data-origin-height=&quot;460&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1767204494736&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;조건 1: 인자 개수가 2개인가? (WannaCry.exe /i)
   &amp;darr;
조건 2: 두 번째 인자가 &quot;/i&quot;인가?
   &amp;darr;
조건 3: 설치 디렉토리 생성 성공?
        - 우선순위 1: C:\ProgramData\[랜덤이름]
        - 우선순위 2: C:\Intel\[랜덤이름]
        - 우선순위 3: %TEMP%\[랜덤이름]
        - 디렉토리에 Hidden + System 속성 설정
   &amp;darr;
조건 4: 현재 실행 파일을 tasksche.exe로 복사
   &amp;darr;
조건 5: tasksche.exe 파일이 정상적으로 생성되었는지 확인
   &amp;darr;
조건 6: tasksche.exe를 Windows 서비스로 등록하고 시작
        - 기존 서비스가 있으면 시작
        - 없으면 새로 생성하고 시작
        - 60초 동안 뮤텍스 생성 대기

모든 조건을 만족하면 &amp;rarr; 설치 완료, 프로그램 종료
하나라도 실패하면 &amp;rarr; 일반 실행 모드로 진행&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&amp;ldquo;-i&amp;rdquo; 인자가 없을 때 : 일반 실행 모드&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1507&quot; data-origin-height=&quot;638&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3ADbg/dJMb99Szq0R/02Pbd9s2e9IHf2KLktWfjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3ADbg/dJMb99Szq0R/02Pbd9s2e9IHf2KLktWfjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3ADbg/dJMb99Szq0R/02Pbd9s2e9IHf2KLktWfjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3ADbg%2FdJMb99Szq0R%2F02Pbd9s2e9IHf2KLktWfjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1507&quot; height=&quot;638&quot; data-origin-width=&quot;1507&quot; data-origin-height=&quot;638&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;레지스트리에 경로 저장 (지속성 확보)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1513&quot; data-origin-height=&quot;622&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bn6BYa/dJMcacuZw1k/E3IyqlKXfteftHEGWHgHF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bn6BYa/dJMcacuZw1k/E3IyqlKXfteftHEGWHgHF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bn6BYa/dJMcacuZw1k/E3IyqlKXfteftHEGWHgHF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbn6BYa%2FdJMcacuZw1k%2FE3IyqlKXfteftHEGWHgHF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1513&quot; height=&quot;622&quot; data-origin-width=&quot;1513&quot; data-origin-height=&quot;622&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;랜섬웨어 리소스 추출&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;537&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBX5nS/dJMcadHoFxK/4uoKOereho556FeBKMYBz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBX5nS/dJMcadHoFxK/4uoKOereho556FeBKMYBz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBX5nS/dJMcadHoFxK/4uoKOereho556FeBKMYBz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBX5nS%2FdJMcadHoFxK%2F4uoKOereho556FeBKMYBz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1512&quot; height=&quot;537&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;537&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;비트코인 주소 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1533&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MBQco/dJMcaf6jO0s/8uzh91gen6eL0heek40ik0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MBQco/dJMcaf6jO0s/8uzh91gen6eL0heek40ik0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MBQco/dJMcaf6jO0s/8uzh91gen6eL0heek40ik0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMBQco%2FdJMcaf6jO0s%2F8uzh91gen6eL0heek40ik0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1533&quot; height=&quot;400&quot; data-origin-width=&quot;1533&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 숨김 및 권한 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1513&quot; data-origin-height=&quot;41&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSjU06/dJMcaaRtOH0/rrz7c5IHRRnQ8k81SuPQG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSjU06/dJMcaaRtOH0/rrz7c5IHRRnQ8k81SuPQG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSjU06/dJMcaaRtOH0/rrz7c5IHRRnQ8k81SuPQG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSjU06%2FdJMcaaRtOH0%2Frrz7c5IHRRnQ8k81SuPQG1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1513&quot; height=&quot;41&quot; data-origin-width=&quot;1513&quot; data-origin-height=&quot;41&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1450&quot; data-origin-height=&quot;25&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZiBGl/dJMcadACjAd/WvhNyn9QnaUJbiJGbKidp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZiBGl/dJMcadACjAd/WvhNyn9QnaUJbiJGbKidp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZiBGl/dJMcadACjAd/WvhNyn9QnaUJbiJGbKidp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZiBGl%2FdJMcadACjAd%2FWvhNyn9QnaUJbiJGbKidp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1450&quot; height=&quot;25&quot; data-origin-width=&quot;1450&quot; data-origin-height=&quot;25&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1453&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b41AuK/dJMcab3UVz8/7EYtCfKb6K74RVnUFBF5Qk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b41AuK/dJMcab3UVz8/7EYtCfKb6K74RVnUFBF5Qk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b41AuK/dJMcab3UVz8/7EYtCfKb6K74RVnUFBF5Qk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb41AuK%2FdJMcab3UVz8%2F7EYtCfKb6K74RVnUFBF5Qk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1453&quot; height=&quot;21&quot; data-origin-width=&quot;1453&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시스템 호환성 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;518&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bflX4S/dJMcab3UVAg/EkSnhphdmkk54QH8LFingk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bflX4S/dJMcab3UVAg/EkSnhphdmkk54QH8LFingk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bflX4S/dJMcab3UVAg/EkSnhphdmkk54QH8LFingk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbflX4S%2FdJMcab3UVAg%2FEkSnhphdmkk54QH8LFingk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1532&quot; height=&quot;518&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;518&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;메인 페이로드 복호화 및 실행
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;암호화 DLL : t.wnry 파일에서 암호화된 DLL 추출 및 복호화&lt;/li&gt;
&lt;li&gt;파일 검증 : &quot;WANACRY!&quot; 시그니처 확인&lt;/li&gt;
&lt;li&gt;RSA 복호화 : RSA 개인 키로 256바이트 암호화된 데이터 복호화 &amp;rarr; AES 키 추출&lt;/li&gt;
&lt;li&gt;AES 복호화 : 추출한 AES-128 키로 페이로드 데이터 복호화 (AES-128-CBC)&lt;/li&gt;
&lt;li&gt;메모리 반환 : 복호화된 페이로드가 담긴 메모리 주소 반환&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;597&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DIV7N/dJMcahpxNtd/A66KwXNk9ZxbN67I8kmkc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DIV7N/dJMcahpxNtd/A66KwXNk9ZxbN67I8kmkc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DIV7N/dJMcahpxNtd/A66KwXNk9ZxbN67I8kmkc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDIV7N%2FdJMcahpxNtd%2FA66KwXNk9ZxbN67I8kmkc1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1510&quot; height=&quot;597&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;597&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1507&quot; data-origin-height=&quot;417&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VX07p/dJMcac9x3dW/ngaKEXNV7aSyclD7cACTYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VX07p/dJMcac9x3dW/ngaKEXNV7aSyclD7cACTYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VX07p/dJMcac9x3dW/ngaKEXNV7aSyclD7cACTYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVX07p%2FdJMcac9x3dW%2FngaKEXNV7aSyclD7cACTYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1507&quot; height=&quot;417&quot; data-origin-width=&quot;1507&quot; data-origin-height=&quot;417&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AES-128-CBC 복호화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1513&quot; data-origin-height=&quot;602&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czB7Dk/dJMcagqCeVr/uqsIH3lBiBQt6TiPUPkN6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czB7Dk/dJMcagqCeVr/uqsIH3lBiBQt6TiPUPkN6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czB7Dk/dJMcagqCeVr/uqsIH3lBiBQt6TiPUPkN6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczB7Dk%2FdJMcagqCeVr%2FuqsIH3lBiBQt6TiPUPkN6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1513&quot; height=&quot;602&quot; data-origin-width=&quot;1513&quot; data-origin-height=&quot;602&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;페이로드 진입점 탐색 (TaskStart 함수)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1515&quot; data-origin-height=&quot;536&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgyzr3/dJMcacBLfKA/BJEKFWOdEGdYr80TXAOun1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgyzr3/dJMcacBLfKA/BJEKFWOdEGdYr80TXAOun1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgyzr3/dJMcacBLfKA/BJEKFWOdEGdYr80TXAOun1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdgyzr3%2FdJMcacBLfKA%2FBJEKFWOdEGdYr80TXAOun1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1515&quot; height=&quot;536&quot; data-origin-width=&quot;1515&quot; data-origin-height=&quot;536&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리소스 정리&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btb2v3/dJMcaiWe3KX/jKr2UcMWXX69tsRRdtusKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btb2v3/dJMcaiWe3KX/jKr2UcMWXX69tsRRdtusKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btb2v3/dJMcaiWe3KX/jKr2UcMWXX69tsRRdtusKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbtb2v3%2FdJMcaiWe3KX%2FjKr2UcMWXX69tsRRdtusKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1532&quot; height=&quot;160&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;160&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1767202870849&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;1. 작업 디렉토리 설정
   &amp;darr; strrchr로 파일 경로에서 마지막 '\' 찾기
   &amp;darr; '\' 이후를 NULL로 변경 (디렉토리 경로만 추출)
   &amp;darr; SetCurrentDirectoryA로 실행 파일의 디렉토리로 이동

2. 레지스트리에 경로 저장 (지속성 확보)
   &amp;darr; registry_save_or_load_path(1) 호출
   &amp;darr; HKLM\Software\WanaCrypt0r 또는 HKCU\Software\WanaCrypt0r에 현재 디렉토리 저장

3. 랜섬웨어 리소스 추출
   &amp;darr; extract_zip_resources: 리소스 ID 0x80A (ZIP 파일) 추출
   &amp;darr; 압축 해제하여 다음 파일들 생성:
      - @WanaDecryptor@.exe (랜섬노트 UI 프로그램)
      - 언어별 메시지 파일 (msg/m_*.wnry)
      - 기타 리소스 파일

4. 비트코인 주소 설정
   &amp;darr; setup_bitcoin_address 호출
   &amp;darr; 3개 비트코인 주소 중 랜덤으로 1개 선택:
      - 13AM4VW2dhxYgXeQepoHkHSQuy6NgaEb94
      - 12t9YDPgwueZ9NyMgw519p7AA8isjr6SMw
      - 115p7UMMngoj1pMvkpHijcRdfJNXj6LrLn
   &amp;darr; __bitcoin_txt 파일에 선택한 주소 저장

5. 파일 숨김 및 권한 설정
   &amp;darr; create_process_hidden(&quot;attrib +h .&quot;) - 현재 디렉토리 숨김 속성 설정
   &amp;darr; create_process_hidden(&quot;icacls . /grant Everyone:F /T /C /Q&quot;)
      - 모든 사용자에게 전체 권한 부여
      - /T: 하위 디렉토리 포함
      - /C: 오류 무시하고 계속
      - /Q: 조용히 실행

6. 시스템 호환성 확인
   &amp;darr; check_system_and_load_apis 호출
   &amp;darr; Windows 버전 확인 (Vista 이상)
   &amp;darr; 파일 작업 API 동적 로드:
      - CreateFileW, WriteFile, ReadFile
      - MoveFileW, MoveFileExW, DeleteFileW
      - CloseHandle

7. 메인 페이로드 복호화 및 실행
   &amp;darr; init_resource_manager - 리소스 관리자 초기화
   &amp;darr; prepare_resource_buffers - 리소스 버퍼 준비
   &amp;darr; extract_and_decrypt_resource(&quot;t.wnry&quot;) - t.wnry 파일 복호화:
      │  ├ 파일 시그니처 확인: &quot;WANACRY!&quot;
      │  ├ RSA로 암호화된 AES 키 256바이트 읽기
      │  ├ RSA 개인키로 AES 키 복호화
      │  └ AES-128로 페이로드 복호화
   &amp;darr; decompress_payload - 복호화된 페이로드 압축 해제
   &amp;darr; get_payload_entry_point(&quot;TaskStart&quot;) - 페이로드에서 &quot;TaskStart&quot; 함수 찾기
   &amp;darr; 페이로드 진입점 실행 &amp;rarr; **메인 랜섬웨어 활동 시작**
      │  ├ 파일 암호화 시작
      │  ├ 랜섬노트 표시
      │  ├ 네트워크 공격 (SMB 취약점 악용)
      │  └ 시스템 복구 방지 (섀도우 복사본 삭제 등)
   &amp;darr; cleanup_resource_manager - 리소스 정리

8. 프로그램 종료&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 5. 복호화 기술 분석 (Decryption Strategy)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;5.1 동적 API 후킹을 통한 키 데이터 캡처&lt;/span&gt; &lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WannaCry는 탐지를 피하기 위해 암호화 API를 동적으로 로드한다. 이 호출 시점을 가로채어 복구에 필요한 핵심 인자들을 JSON 형태로 확보한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;대칭키 원천 데이터 확보 :&lt;/b&gt; 암호화 모듈이 &lt;b&gt;CryptGenRandom&lt;/b&gt;을 호출하여 생성하는 16바이트 난수를 캡처한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;비대칭키 구조 재구성 :&lt;/b&gt; &lt;b&gt;CryptExportKey&lt;/b&gt; 호출 시 노출되는 &lt;b&gt;PRIVATEKEYBLOB&lt;/b&gt;을 가로채어 RSA 개인키의 구성 요소(&lt;i&gt;modulus&lt;/i&gt;, &lt;i&gt;prime1&lt;/i&gt;, &lt;i&gt;prime2&lt;/i&gt;, &lt;i&gt;exponent&lt;/i&gt; 등)를 복원한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.2 암호화 컨테이너 및 헤더 분석&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복호화를 위해 &lt;b&gt;.WNCRY&lt;/b&gt; 파일의 구조를 정밀하게 파싱하여 암호화된 본문과 메타데이터를 분리한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;헤더 식별 및 검증 :&lt;/b&gt; 파일 선두 8바이트의 매직 넘버(&lt;b&gt;WANACRY!&lt;/b&gt;)를 통해 대상 파일 여부를 확인한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;메타데이터 추출 :&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;키 블록 파싱&lt;/b&gt; &lt;b&gt;:&lt;/b&gt; RSA로 암호화된 AES 키의 크기(필드 0x08)를 읽어 데이터 오프셋을 계산한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;원본 크기 복원 :&lt;/b&gt; 파일 종단에 추가된 패딩을 제거하기 위해 8바이트의 원본 크기(Original Size) 정보를 확보한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.3 복호화 알고리즘 구현&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캡처된 키 후보군을 순차적으로 대입하여 CBC 모드 복호화를 수행하는 핵심 로직이다.&lt;/p&gt;
&lt;pre id=&quot;code_1767202980109&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def execute_aes_decryption(cipher_payload, key_candidate, original_size):
    &quot;&quot;&quot;
    AES-128-CBC 알고리즘을 이용한 데이터 복구 로직
    &quot;&quot;&quot;
    # IV(초기화 벡터)는 16바이트 Zero로 고정됨
    initial_vector = b'\x00' * 16
    
    # 1. 블록 크기(16바이트) 정렬을 위한 패딩 처리
    if len(cipher_payload) % 16 != 0:
        cipher_payload += b'\x00' * (16 - (len(cipher_payload) % 16))
    
    # 2. CBC 모드 복호화 엔진 초기화 및 실행
    cipher_engine = AES.new(key_candidate, AES.MODE_CBC, initial_vector)
    decrypted_raw = cipher_engine.decrypt(cipher_payload)
    
    # 3. 메타데이터에 기록된 원본 크기만큼 데이터 절삭 (패딩 제거)
    return decrypted_raw[:original_size]&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5.4 다중 키 전수조사 및 무결성 검증&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;후킹된 JSON 로그에 여러 개의 키가 존재할 경우, 각 키로 복호화된 결과물의 상위 바이트(Magic Number)를 대조하여 최종 복구 성공 여부를 판별한다.&lt;/p&gt;
&lt;pre id=&quot;code_1767202998403&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def verify_restored_content(data, ext):
    &quot;&quot;&quot;
    복호화된 데이터의 파일 포맷 시그니처 검증
    &quot;&quot;&quot;
    # 1. 파일 크기 임계값 검사
    if len(data) &amp;lt; 4: return False, &quot;Invalid Length&quot;

    # 2. 확장자별 매직 넘버 대조 (Whitelisting 방식)
    magic = data[:4]
    if ext in ['.JPG', '.JPEG'] and magic[:3] == b'\xFF\xD8\xFF':
        return True, &quot;✅ JPEG 이미지 확인&quot;
    elif ext == '.PNG' and magic == b'\x89PNG':
        return True, &quot;✅ PNG 이미지 확인&quot;
    elif ext == '.PDF' and magic[:4] == b'%PDF':
        return True, &quot;✅ PDF 문서 확인&quot;
    elif ext in ['.DOCX', '.XLSX'] and magic[:2] == b'PK':
        return True, &quot;✅ MS Office (OpenXML) 확인&quot;
    
    return False, &quot;잘못된 복호화 시도&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 6. 요약 및 결론 (Conclusion)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.1 설계 의도 및 암호학적 한계&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WannaCry는 설계 당시 공격자의 마스터 개인키(Master Private Key) 없이는 원본 데이터 복구가 불가능하도록 의도된 고강도 암호화 아키텍처를 보유하고 있다. 그러나 실제 구현 과정에서 파일 암호화에 직접적으로 관여하는 &lt;b&gt;대칭키(AES-128) 생성 시점에 Windows CryptoAPI를 호출하며, 이 과정에서 키 데이터가 메모리 상에 평문(Plaintext)으로 노출&lt;/b&gt;되는 치명적인 설계 결함이 확인되었다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6.2 데이터 복구 가능성 입증&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 분석을 통해 실시간 API 후킹으로 확보된 &lt;b&gt;CryptGenRandom&lt;/b&gt;의 페이로드를 활용한 복구 메커니즘을 검증하였다. 이를 통해 공격자와의 타협이나 비용 지불 없이도 감염된 시스템 내부의 원본 파일을 안정적으로 복원할 수 있음을 입증하였으며, 이는 랜섬웨어 대응 전략에 있어 매우 중요한 기술적 근거가 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;다운로드 (1).svg&quot; data-origin-width=&quot;1068&quot; data-origin-height=&quot;2192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFjWER/dJMcabQnxob/Cy8l1hrY9Ub5MSUGCMvDm1/tfile.svg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFjWER/dJMcabQnxob/Cy8l1hrY9Ub5MSUGCMvDm1/tfile.svg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFjWER/dJMcabQnxob/Cy8l1hrY9Ub5MSUGCMvDm1/tfile.svg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFjWER%2FdJMcabQnxob%2FCy8l1hrY9Ub5MSUGCMvDm1%2Ftfile.svg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;556&quot; height=&quot;1141&quot; data-filename=&quot;다운로드 (1).svg&quot; data-origin-width=&quot;1068&quot; data-origin-height=&quot;2192&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 7. 대응 및 예방 가이드 (Mitigation &amp;amp; Recovery)&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;7.1 초동 조치 및 데이터 보존 전략&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;프로세스 유지 및 메모리 보호&lt;/b&gt; &lt;b&gt;:&lt;/b&gt; 감염 식별 시 랜섬웨어 프로세스를 즉시 종료하거나 시스템을 재부팅하는 행위는 메모리에 상주하는 키 데이터를 소멸시키므로 지양해야 한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;동적 데이터 추출 :&lt;/b&gt; 프로세스가 실행 중인 상태에서 메모리 덤프를 획득하거나 API 후킹 로그를 확보하여, 파일 복호화의 핵심인 &lt;b&gt;CryptGenRandom&lt;/b&gt; 생성 키와 &lt;b&gt;PRIVATEKEYBLOB&lt;/b&gt; 데이터를 선제적으로 추출해야 한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;네트워크 격리 :&lt;/b&gt; 자가 전파를 차단하기 위해 즉시 네트워크를 차단하되, 시스템 전원은 유지하여 휘발성 증거(Volatile Evidence)를 보존하는 것이 복구의 핵심이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;7.2 기술적 복구 프로세스&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;추출 키 기반 전수조사 :&lt;/b&gt; 확보된 AES 키 리스트를 복호화 엔진에 입력하여 &lt;b&gt;.WNCRY&lt;/b&gt; 파일의 헤더 파싱 결과와 대조한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;자동화 복구 수행 :&lt;/b&gt; 검증된 대칭키를 활용하여 &lt;b&gt;decrypted&lt;/b&gt; 폴더 내에 원본 데이터를 재생성하며, 파일 시그니처 대조를 통해 복구 데이터의 무결성을 최종 확인한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 부록: 침해 지표 (IOC)&lt;/b&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Type&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Value&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hash&lt;/td&gt;
&lt;td&gt;SHA256&lt;/td&gt;
&lt;td&gt;ed01ebfbc9eb5bbea545af4d01bf5f1071661840480439c6e5babe8e080e41aa&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;File&lt;/td&gt;
&lt;td&gt;Resource&lt;/td&gt;
&lt;td&gt;t.wnry (Encrypted DLL Container)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Magic&lt;/td&gt;
&lt;td&gt;String&lt;/td&gt;
&lt;td&gt;WANACRY!&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Extension&lt;/td&gt;
&lt;td&gt;Suffix&lt;/td&gt;
&lt;td&gt;.WNCRY&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>랜섬웨어 분석 보고서</category>
      <author>geonwoo9643</author>
      <guid isPermaLink="true">https://mzcompany.tistory.com/8</guid>
      <comments>https://mzcompany.tistory.com/8#entry8comment</comments>
      <pubDate>Thu, 1 Jan 2026 23:23:47 +0900</pubDate>
    </item>
  </channel>
</rss>