← 기술 블로그 목록으로 돌아가기
#959 • Internationalization & Security Codec Architecture

피싱 도메인과 중첩 난독화를 해체하는 7대 텍스트 코덱: ZeliEnc의 Punycode·Unicode Escape와 3단계 순차 일괄 디코딩 아키텍처

"학교 알림장 링크에 섞여 들어온 키릴 문자 도메인(호모그래프 공격)과 악성 스크립트의 3중 중첩 인코딩을 어떻게 단 1초 만에 규명할 수 있을까요?" RFC 3492 IdnMapping 기반 Punycode(xn--) 도메인 위변조 판별, 악성 페이로드가 숨겨둔 제어 문자를 가시화하는 Unicode Escape(\uXXXX) 코덱, 웹 방화벽(WAF)을 우회하는 다중 난독화를 0초 만에 벗겨내는 3단계(URL ➔ HTML ➔ Unicode) 순차 일괄 디코딩(Bulk Decode), 정규표현식 기반 6대 인코딩 휴리스틱 자동 감지(Auto-Detect), 그리고 UTF-8/UTF-16 바이트 텔레메트리 백서.

"사이버 공격자들은 이제 조잡한 단어 대신 인간의 눈을 속이는 '시각적 유사 문자(Homograph)'를 사용합니다. 키릴 문자 'а'(\u0430)로 만든 도메인은 주소창에서 라틴 문자 'a'(\u0061)와 완벽히 똑같이 보이지만, 실제로는 해커의 피싱 사이트로 연결됩니다. 또한 방화벽을 피하기 위해 공격 코드를 URL로 감싸고, HTML 엔티티로 감싸고, 유니코드로 다시 감싸는 3중 난독화를 적용합니다. ZeliEnc는 이러한 고도화된 텍스트 위협을 단 한 번의 클릭으로 벗겨내어 순수한 원본을 드러냅니다."

1. 눈속임 공격과 다중 난독화: "호모그래프 피싱과 WAF 우회 기법의 진화"

학교 교육망과 군부대 인트라넷을 위협하는 지능형 지속 위협(APT)은 정교한 텍스트 변형 기법을 악용합니다:

2. RFC 3492 Punycode(xn--) 엔진: 키릴 문자 시각적 위장 도메인의 완벽한 적발

인터넷 도메인 네임 시스템(DNS)은 오직 아스키(ASCII) 문자만을 인식합니다. 비아스키 다국어 문자를 DNS에서 처리하기 위해 고안된 표준이 IETF RFC 3492 퓨니코드(Punycode)입니다.

ZeliEnc는 .NET의 System.Globalization.IdnMapping을 기반으로, 전체 도메인뿐만 아니라 점(.)으로 구분된 호스트네임의 각 서브도메인을 분해하여 정확한 xn-- 아스키 표현으로 인코딩/디코딩합니다:

C# (ZeliEncWindow.xaml.cs) RFC 3492 Punycode 양방향 변환 엔진
private string PunycodeEncode(string input)
{
    try
    {
        var idn = new System.Globalization.IdnMapping();
        return idn.GetAscii(input); // 예: "한글.com" ➔ "xn--bj0bj06e.com"
    }
    catch
    {
        // 도메인 형식이 아닌 일반 텍스트의 경우 각 단어(레이블)별 순차 처리
        var parts = input.Split('.');
        var idn = new System.Globalization.IdnMapping();
        var encoded = parts.Select(p =>
        {
            try { return idn.GetAscii(p); }
            catch { return p; }
        });
        return string.Join(".", encoded);
    }
}

private string PunycodeDecode(string input)
{
    try
    {
        var idn = new System.Globalization.IdnMapping();
        return idn.GetUnicode(input); // 예: "xn--bj0bj06e.com" ➔ "한글.com"
    }
    catch { ... }
}

보안 담당자는 의심스러운 URL을 ZeliEnc에 붙여넣는 즉시 해당 주소가 진짜 알파벳인지, 아니면 xn-- 접두어가 붙은 위장 도메인인지 0초 만에 판별할 수 있습니다.

3. 비가시적 제어 문자의 투명화: Unicode Escape(\uXXXX)와 16진수 바이트 포렌식

화면에 아무것도 표시되지 않는 공백 문자(Zero-Width Space \u200B, Soft Hyphen \u00AD, Byte Order Mark \uFEFF)는 악성 스크립트 분석가를 가장 괴롭히는 요소입니다.

ZeliEnc의 Unicode Escape 인코딩은 127을 초과하는 모든 아스키 외 문자 및 제어 문자를 \uXXXX 16진수 코드포인트로 투명하게 변환합니다:

C# (ZeliEncWindow.xaml.cs) Unicode Escape 인코딩 및 정규식 기반 역치환 디코딩
// 1. 유니코드 이스케이프: 비아스키 문자를 4자리 16진수로 전수 노출
private string UnicodeEncode(string input)
{
    var sb = new StringBuilder();
    foreach (char c in input)
    {
        if (c > 127)
            sb.AppendFormat("\\u{0:X4}", (int)c);
        else
            sb.Append(c);
    }
    return sb.ToString();
}

// 2. 정규표현식 매칭을 통한 \uXXXX 코드포인트의 안전한 문자 복원
private string UnicodeDecode(string input)
{
    return Regex.Replace(input, @"\\u([0-9A-Fa-f]{4})", m =>
    {
        int codePoint = int.Parse(m.Groups[1].Value, NumberStyles.HexNumber);
        return ((char)codePoint).ToString();
    });
}

문자열 속에 숨어 있던 \u200B, \u202E 같은 위험 제어 문자가 시각적으로 적나라하게 드러나므로, 악성 스크립트의 난독화를 단숨에 해체할 수 있습니다.

4. 3단계 순차 일괄 디코딩(Bulk Decode): URL ➔ HTML ➔ Unicode 캐스케이드 파이프라인

지능화된 웹 공격 페이로드는 방화벽 탐지를 피하기 위해 3단계로 중첩 포장되어 유입됩니다:

공격 페이로드 예시 URL + HTML + Unicode 3중 중첩 난독화
%2526lt%253Bscript%2520src%253D%2522%255Cu0068%255Cu0074%255Cu0074%255Cu0070%253A...%2522%2526gt%253B

기존 도구로는 URL 디코딩을 수차례 돌린 뒤, HTML 디코딩을 하고, 다시 유니코드 디코딩을 수작업으로 번갈아 가며 수행해야 했습니다.

ZeliEnc의 [⚡ 일괄 디코딩 (Bulk Decode)] 엔진은 단 한 번의 클릭으로 3개 코덱을 순차적으로 캐스케이딩(Cascade)하며, 각 단계에서 문자열이 어떻게 변화했는지 추적 리포트를 생성합니다:

C# (ZeliEncWindow.xaml.cs) 3단계 차등 추적 일괄 디코딩 엔진
private void BtnBulkDecode_Click(object sender, RoutedEventArgs e)
{
    string result = TxtInput.Text;
    var sb = new StringBuilder();

    // 1단계: URL 퍼센트 디코딩 (적용 여부 자동 감지)
    string afterUrl = Uri.UnescapeDataString(result);
    if (afterUrl != result) { sb.AppendLine("1️⃣ URL 디코딩 적용 완료"); result = afterUrl; }
    else { sb.AppendLine("1️⃣ URL 디코딩 변화 없음"); }

    // 2단계: HTML 엔티티 디코딩
    string afterHtml = WebUtility.HtmlDecode(result);
    if (afterHtml != result) { sb.AppendLine("2️⃣ HTML 디코딩 적용 완료"); result = afterHtml; }
    else { sb.AppendLine("2️⃣ HTML 디코딩 변화 없음"); }

    // 3단계: 유니코드 이스케이프(\uXXXX) 디코딩
    string afterUni = UnicodeDecode(result);
    if (afterUni != result) { sb.AppendLine("3️⃣ Unicode 디코딩 적용 완료"); result = afterUni; }
    else { sb.AppendLine("3️⃣ Unicode 디코딩 변화 없음"); }

    sb.AppendLine("\n── 최종 복원 원본 ──\n" + result);
    TxtOutput.Text = sb.ToString();
}
flowchart TD In["중첩 난독화 문자열 유입"] --> Step1{"1단계: Uri.UnescapeDataString()"} Step1 -->|"URL 디코딩"| Step2{"2단계: WebUtility.HtmlDecode()"} Step2 -->|"HTML 디코딩"| Step3{"3단계: UnicodeDecode()"} Step3 -->|"Unicode 디코딩"| Out["최종 순수 평문 텍스트 (Plaintext) 추출!"] classDef in fill:#1e293b,stroke:#f43f5e,stroke-width:2px,color:#fecdd3; classDef step fill:#0f172a,stroke:#38bdf8,stroke-width:2px,color:#f8fafc; classDef out fill:#064e3b,stroke:#10b981,stroke-width:2px,color:#d1fae5; class In in; class Step1,Step2,Step3 step; class Out out;

5. 정규표현식 기반 6대 인코딩 휴리스틱 자동 감지(Auto-Detect)와 문자 텔레메트리

화면에 복잡한 암호문이나 인코딩된 문자열이 나타났을 때, 초보자는 이것이 Base64인지, Hex인지, URL 인코딩인지 구별하기 어렵습니다.

ZeliEnc의 BtnAutoDetect_Click 엔진은 정규표현식 시그니처 분석을 통해 해당 문자열의 인코딩 형식을 즉시 탐지합니다:

동시에 ASCII 문자 수, 비아스키 문자 수, 제어 문자(Control Chars) 수, UTF-8 바이트 수, UTF-16 바이트 수를 정밀 텔레메트리로 출력하여 문서 분석을 완벽히 지원합니다.

6. 7대 코덱 통합 아키텍처 (URL, HTML, Unicode, Hex, ROT13, Punycode, Base64)

코덱 모드 표준 규격 주요 보안 및 교육 실무 적용처
Punycode RFC 3492 IDN 호모그래프 피싱 도메인 식별 및 한글 도메인 등록
Unicode Escape Unicode 15.0 악성 제어 문자(\u200B, \u202E) 가시화 및 JSON 원시 파싱
URL Encode RFC 3986 한글 쿼리 파라미터 및 REST API 엔드포인트 무결성
HTML Entity HTML5 W3C XSS 악성 스크립트 실행 방지 엔티티 이스케이프
Hex Encode Raw Byte 네트워크 패킷 덤프 및 바이너리 파일 16진수 분석
Base64 RFC 4648 인증 헤더, 파일 첨부, 이미지 데이터 URI 직렬화
ROT13 Caesar Cipher 교육용 기초 암호학 실습 및 텍스트 스포일러 방지

7. 결론: "교육과 국방의 디지털 자산을 지키는 온디바이스 텍스트 인텔리전스"

현대 사이버 위협은 점점 더 인간의 눈과 전통적인 시그니처 필터를 교묘하게 우회하는 방향으로 진화하고 있습니다.

ZeliEnc는 외부 클라우드로 단 1바이트의 텍스트도 유출하지 않는 완전 격리 온디바이스 환경에서, 7대 핵심 코덱의 양방향 변환과 3단계 일괄 디코딩, 휴리스틱 자동 감지 엔진을 제공함으로써 공교육과 국방의 사이버 보안 담당자들에게 가장 강력하고 신뢰할 수 있는 텍스트 포렌식 무기를 제공합니다.

← 이전 기술 백서 #960 웹 취약점과 데이터 왜곡을 원천 차단하는 인코딩 파이프라인: ZeliBase의 XSS 엔티티 이스케이프와 RFC 3986 URL·Base64 양방향 변환 아키텍처 다음 기술 백서 → #958 무설치 듀얼 데이터베이스 엔진: ZeliSQL의 SQLite 인메모리 파이프라인과 MySqlConnector 커넥션 풀링 아키텍처
🔍 ZeliDesk ZeliEnc 텍스트 포렌식 코덱 체험하기
Punycode 피싱 도메인 적발부터 3단계 일괄 디코딩까지, 0.001초 만에 숨겨진 악성 텍스트를 해체하세요.
72종 유틸리티 전체 둘러보기 →