보이지 않는 문자로 피싱 필터를 넘었다…메일 정규화가 필요한 이유

Microsoft Security Research는 2026년 9월 3일, 금융 관련 유인어 사이에 보이지 않는 Unicode 태그 문자를 끼워 문자열 기반 탐지를 피하려 한 대량 피싱 활동을 공개했다. Microsoft의 위협 연구 에 따르면 Defender for Office 365의 관련 서명 적중량은 2월 9일부터 급증해 평일마다 높은 수준을 보였고, 공격자는 ‘funding’ 같은 금융 유인어를 보이지 않는 문자로 분절했다.
이번 공개가 확인한 우회 대상은 정규화되지 않은 키워드·정규식·유사 문자열 판독 단계다. 모든 메일 방어가 무력화된 것은 아니다. BleepingComputer의 9월 6일 보도 에 따르면 Microsoft Defender는 발신자와 IP, URL, 도메인 평판 등 다른 계층을 통해 해당 메시지의 99% 이상을 탐지했다.
금융 유인어를 가른 것은 U+E0020 한 문자였다
이 활동은 AI에 숨은 명령을 전달하는 전형적인 프롬프트 인젝션과 달랐다. Microsoft가 표본에서 확인한 방식은 Unicode Tags 블록에 속하는 U+E0020 TAG SPACE를 금융 관련 단어 중간에 구분자처럼 넣는 것이었다.
예를 들어 ‘funding’은 원문에서 ‘fun’, U+E0020, ‘ding’이 이어진 문자열로 전송됐다. 일반적인 글꼴과 메일 화면은 이 코드 포인트를 표시하지 않아 수신자에게는 온전한 단어처럼 보이지만, 연속된 ‘funding’만 찾는 규칙에는 일치하지 않을 수 있다. 표본에는 완전한 숨은 ASCII 메시지가 아니라 단일 태그 문자가 사용됐으므로, 엄밀히는 태그 블록을 이용한 비표시 문자 삽입에 가깝다.
관측된 메일은 사업자금, 신용한도, 선지급 자금 등을 내세웠다. 관련 서명 적중량은 2월 9일 급증한 뒤 약 3개월 동안 평일에 높고 주말에는 거의 사라지는 흐름을 보였으며, 고용량 단계는 5월 15일 이후 급감하고 6월 중순까지 낮은 잔여 활동이 이어졌다. 이는 해당 기법이 관측된 기간이지 더 넓은 피싱 캠페인 전체의 시작과 종료를 뜻하지 않는다.
같아 보이는 문장이 필터에는 다른 문자열이 된다

공격이 이용한 Unicode Tags 블록의 범위는 U+E0000~U+E007F다. 이 범위에는 출력 가능한 ASCII 문자에 대응하는 코드 포인트가 들어 있으며, 다수는 일반적인 화면에 나타나지 않아 사람이 보는 문장과 프로그램이 받는 코드 포인트 배열을 다르게 만들 수 있다.
정규화하지 않은 원문에서 ‘loan’, ‘credit’, ‘capital’ 같은 연속 문자열만 찾으면 중간의 태그 문자가 일치를 끊는다. 토크나이저도 익숙한 단어 대신 앞부분, 낯선 코드 포인트, 뒷부분으로 입력을 나눌 수 있다. 반대로 필터가 먼저 비표시 문자를 제거하거나 렌더링된 결과를 OCR로 판독하면 원래 단어를 복원해 검사할 수 있다.
따라서 제목의 ‘필터를 넘었다’는 표현은 단순 문자열 판독을 방해했다는 범위로 이해해야 한다. 발신자 평판, 인증 결과, 링크 분석, 대량 발송 패턴, OCR과 콘텐츠 분류를 결합한 계층형 방어는 같은 메시지를 별도로 포착할 수 있다. 특정 제품 전체가 뚫린 사례가 아니라 전처리 방식에 따라 탐지 결과가 달라지는 취약 지점이 확인된 것이다.
메일은 합법적인 이메일 마케팅 서비스 ActiveCampaign과 연관된 인프라를 통해 전달됐다. ITPro가 전한 ActiveCampaign의 설명 에 따르면 회사는 이 기법을 자사 콘텐츠 조정 시스템에서 시험했으며, 비표시 문자가 든 메시지와 원래 문구에 같은 판정을 내리고 과도한 사용도 의심 신호로 취급한다고 밝혔다. 공유 인프라 자체는 정상 고객도 이용하므로 플랫폼의 네트워크나 추적 도메인만 차단 근거로 삼아서는 안 된다.
태그 블록을 찾되 정상 국기 시퀀스는 제외해야 한다

U+E0000~U+E007F가 있다는 이유만으로 모든 메일을 차단하면 오탐이 생긴다. Microsoft의 초기 탐지 서명도 잉글랜드·스코틀랜드·웨일스의 지역 국기 이모지를 정상 메시지에서 잡아냈다. 이 이모지들은 U+1F3F4 검은 깃발 코드 포인트 뒤에 지역명을 나타내는 태그 문자들과 U+E007F 종료 태그를 붙여 구성한다.
예외는 화면에 표시된 국기 모양이 아니라 완전한 코드 포인트 시퀀스로 검증해야 한다. 알려진 지역 국기 조합은 좁게 허용하되, 일반 단어 사이에 놓였거나 정상 시퀀스를 완성하지 못한 태그 문자는 강한 이상 신호로 다루는 조건이 적절하다. 정상 예외를 뺀 뒤에도 보안 연구 샘플이나 전달된 분석 메일이 남을 수 있으므로 태그 문자 하나만으로 악성 판정을 확정해서는 안 된다.
정확도를 높이려면 비정상 태그 문자와 함께 금융 유인어, 교체되는 발신 도메인, 평일에 집중된 대량 전송 같은 행위 신호를 결합해야 한다. 반대로 ActiveCampaign의 공유 네트워크 대역이나 추적 링크는 합법적인 메일에도 쓰이므로 단독 침해지표가 아니다.
메일 필터와 AI보다 앞에서 같은 사본을 정규화한다

핵심 순서는 탐지 전에 정규화하는 것이다. 메일 제목과 본문을 디코딩한 뒤 U+E0000~U+E007F 및 정책상 허용하지 않는 다른 제로 폭·비표시 코드 포인트를 제거하거나 안전한 형태로 변환하고, 그 결과에 키워드·정규식·피싱 서명을 적용해야 한다. 판정 뒤에 문자를 정리하면 앞서 실패한 문자열 일치를 복구할 수 없다.
메일 처리 흐름에서는 MIME·HTML 해석과 텍스트 추출 직후, 콘텐츠 분류와 라우팅 전에 공통 전처리 계층을 두는 구성이 맞다. 제목, 본문, 링크의 표시 문자열에 같은 정책을 적용하되 URL 원문, 전자서명 검증 대상, 포렌식용 데이터까지 변형해서는 안 된다. 수신 원문을 보존하고 판정용 사본만 변환해야 감사와 사고 조사에서도 코드 포인트 삽입 흔적을 확인할 수 있다.
메일을 요약하거나 분류하는 AI가 연결돼 있다면 모델에도 필터가 검사한 것과 같은 정규화 사본을 전달해야 한다. 게이트웨이는 정리된 텍스트를 검사하지만 AI는 원문을 받는 구조라면 두 보안 계층이 서로 다른 입력을 판단하게 된다. 같은 Unicode 범위가 AI 프롬프트를 숨기는 데도 쓰일 수 있으므로 메일 보안과 AI 입력 단계의 예외 목록과 로그 기준도 일치시킬 필요가 있다.
공개된 자료는 이 기법과 일치한 고용량 활동이 5월 중순 이후 줄었다고 밝히지만, 더 넓은 금융 피싱 활동은 앞서 시작됐고 해당 문자 사용이 감소한 뒤에도 이어졌다고 구분한다. 국내 메일 보안 제품이나 자체 규칙별 처리 결과를 비교한 공개 자료도 아직 없다. 현재 확인된 방어 원칙은 정상 지역 국기 시퀀스를 제한적으로 보존하고, 그 밖의 비표시 문자를 콘텐츠 탐지와 AI 입력 전에 일관되게 정규화하며, 변환 전후 차이를 다른 발신 행위 신호와 함께 판단하는 것이다.
함께 읽기:
뉴스레터 구독
최신 Web3, AI, 암호화폐 뉴스를 이메일로 받아보세요.