[사이버 탐험 : 보안의 첫걸음] 파일 은닉이란?

파일 은닉의 정의

파일 은닉이란?

파일 은닉이란 시스템 혹은 사용자 눈을 피해 파일을 숨기거나 속이는 기술을 의미해요.

예를 들어, 실행 파일을 이미지 파일처럼 위장하거나, 윈도우에서 보이지 않게 숨기거나, 텍스트 파일 안에 다른 파일을 몰래 숨겨두는 방식 등이 있어요.

윈도우 환경에서는 기본적으로 파일 확장자가 숨김으로 설정되어 있어 일반 사용자는 이러한 사실을 쉽게 눈치챌 수 없는데요, 하지만 이러한 은닉 기법을 알면 입문자도 충분히 탐지할 수 있습니다.

은닉된 파일은 단순히 ‘숨겨져 있는 파일’이 아니라 ‘공격자가 숨기고 싶었던 파일’이기 때문에 핵심 증거이거나 백도어일 가능성이 높아 공격 역추적의 실마리가 되기도 한답니다!


파일 은닉의 Stuxnet

실제 사례를 알아볼까요? 🌎

그림 1. [파일 은닉 - Stuxnet 사건]

그림 1. [파일 은닉 - Stuxnet 사건]

요즘도 이란 핵 시설이 이슈가 되고 있죠. 2010년 이란에서는 핵 시설을 겨냥한 사이버 무기 ‘Stuxnet 사건’이 있었습니다.🚀

Stuxnet, 일명 스턱스넷은 이란 핵 농축 시설의 원심분리기를 무력화하기 위해 특별 설계된 악성코드인데요, 주목해야 할 점은 이 악성코드 구성 파일들이 윈도우 시스템 파일처럼 보이는 이름으로 위장되어 있었다는 것이죠!

예를 들어, 공격자는 mrxdav.sys Microsoft 네트워크 리디렉터 드라이버와 비슷한 이름의 mrxcls.sys라는 가짜 파일을 만들어 기존 서비스인 척 속이기에 성공했어요.

그림 2. [파일 은닉 - Stuxnet 기업 감염 경로]

그림 2. [파일 은닉 - Stuxnet 기업 감염 경로]

밝혀진 공격자는 미국과 이스라엘이었는데요, 이란 엔지니어 기업 ‘베파주’에 이러한 스턱스넷을 심었고, 이곳을 기지로 이란의 주요 핵 시설 원자력발전소까지 퍼져 나가게 되었습니다.

사이버 공격으로 현실 세계의 시설물을 물리적으로 일부 파괴했다는 점에서, 이 사건은 많은 이들에게 충격을 주었고 이후 많은 사이버 공격이 파일 은닉 기법을 사용하기 시작했습니다.

그렇다면 이런 은밀한 파괴력을 가진 ‘파일 은닉 기법‘에는 어떤 것들이 있을까요? 오늘은 일반적이고 친숙한 사용자 환경, 윈도우에서 자주 쓰이는 은닉 기법을 소개합니다.

숨겨진 트릭을 꿰뚫어 보는 눈, 👁️‍🗨️ 그 통찰력을 기르러 함께 가봅시다!


파일 은닉의 기법

파일 은닉의 대표적인 기법 3가지에는 확장자 위장, 유니코드 우회, 시스템 폴더 및 드라이버 위장이 있어요.

그중 가장 대중적인 것은 확장자 위장입니다.

🔎 확장자 위장이란?

확장자 위장을 알아보기 전에 우선 확장자가 무엇인지에 대한 개념이 선행되어야 하는데요,

사실 우리는 이미 확장자가 무엇인지 알고 있습니다. 👀 이게 무슨 소리죠?

그림 3. [안녕.jpg]

그림 3. [안녕.jpg]

그림 4. [VisualStudioSetup.exe]

그림 4. [VisualStudioSetup.exe]

바로 이렇게 파일 이름 끝에 있는 친구들이 확장자이거든요! 파일을 실행하거나 저장해 본 경험이 있다면 누구든 접해보셨을 거예요. 대표적으로 .jpg로 끝나는 파일은 이미지, .exe로 끝나는 파일은 실행 파일입니다.

확장자 위장 기법에서의 핵심은 윈도우 기본 설정에서는 확장자가 보이지 않는다는 것에 있습니다.

예를 들어 파일 이름을 사진.jpg.exe 로 만들면 윈도우 기본 설정에선 .exe가 안 보이고, 사용자는 .jpg 이미지라고 착각하게 되는 것이죠.

대표적인 기법이니만큼, 실제로 가능한지 확인해 보도록 할까요?

🔎 확장자 위장 실습

그림 5. [파일 탐색기]

그림 5. [파일 탐색기]

윈도우에서 파일 탐색기에 들어갑니다. 윈도우 기본 설정을 바꿔주기 위함인데요,

그림 6. [파일 확장명이 보이게 설정하기]

그림 6. [파일 확장명이 보이게 설정하기]

보기 > 표시 > 파일 확장명에 들어가 파일 확장명이 보이게끔 설정을 바꾸어줍니다.

그림 7. [메모장에 코드 작성하기]

그림 7. [메모장에 코드 작성하기]

그다음 메모장을 켜 사진과 같이 코드를 작성해 줍니다. 악성코드가 아닌 테스트 용도의 텍스트 파일이니까 “나는 사진이 아니고 실은 실행 파일이야!”라고 적어 볼게요.

그림 8. [메모장 .txt 파일]

그림 8. [메모장 .txt 파일]

바탕화면에 저장하면 사진과 같이 되는데요, 우리가 흔히 아는 텍스트 파일입니다.

하지만, 이 파일 이름을 cat.jpg.exe 로 변경한다면 어떻게 될까요?

그림 9. [파일 확장명 변경 시 경고창]

그림 9. [파일 확장명 변경 시 경고창]

시도하면 이런 경고창이 뜹니다. 예를 눌러 볼게요.

그림 10. [.jpg.exe 파일]

그림 10. [.jpg.exe 파일]

마치 실행 파일처럼 보이네요. 이것은 우리가 확장자가 보이게 설정해 두었기 때문이죠.

이걸 이미지 파일로 속여 볼까요?

그림 11. [.jpg.exe 바로 가기 파일]

그림 11. [.jpg.exe 바로 가기 파일]

바로 가기 파일을 하나 만들어 줍니다. 바로 가기 파일을 만든 이유는 아이콘 변경을 위해서인데요,

그림 12. [.jpg.exe 바로 가기 파일 아이콘 변경]

그림 12. [.jpg.exe 바로 가기 파일 아이콘 변경]

이렇게 이미지 파일인 것처럼 아이콘을 바꾸고, 바로 가기 부분도 삭제해 주었습니다.

그러면 이제 진짜 이미지 파일을 가져와 볼까요?

그림 13. [난 냐옹이다옹!]

그림 13. [난 냐옹이다옹!]

나옹이다옹. 귀여운 고양이 사진입니다.

그림 14. [진짜 이미지 파일과 가짜 이미지 파일]

그림 14. [진짜 이미지 파일과 가짜 이미지 파일]

나란히 두어보았습니다. 마지막으로 바로 가기 파일 이름을 그냥 cat으로 바꾸어주고, 맨 처음 켜 두었던 파일 확장명 설정을 다시 꺼 볼게요.

그림 15. [둘 다 진짜 이미지 파일?]

그림 15. [둘 다 진짜 이미지 파일?]

짜잔✨ 의심의 여지 없이 마치 아래의 파일이 위의 고양이 사진을 실행하기 위한 바로 가기 파일처럼 보이네요!

그림 16. [가짜 이미지 파일을 실행하면]

그림 16. [가짜 이미지 파일을 실행하면]

고양이 사진을 기대하고 아래 아이콘을 클릭하면, 실행할 수 없다는 팝업 창이 나옵니다. 이건 .jpg.exe라고 이름 붙였지만 내용은 텍스트인 경우라 윈도우가 실행 불가능하다고 판단한 것인데요, 지금은 시각적 이해를 위한 단순 실습이지만 만약 이게 변환 도구로 생성된 악성 코드 파일이었다면 결과는 끔찍했을 것 같습니다.🤯

확장자를 착각시키는 또 다른 방법이 있습니다. 이번에는 조금만 더 난이도를 높여볼게요!

↪️ 유니코드 우회란?

유니코드 우회란, RLO 문자(유니코드 U+202E)를 파일명 중간에 끼워 넣어 확장자가 뒤집히도록 하는 방법이에요.

RLO 문자란 Right-To-Left Override의 약자로 글자의 표시 방향을 강제로 오른쪽에서 왼쪽으로 바꾸는 역할을 합니다.

이 RLO 문자가 바로 유니코드 U+202E인데요, 어렵게 생각하실 것 없어요.

유니코드란 컴퓨터가 모든 문자를 숫자로 표현하기 때문에, 세계 모든 문자를 숫자로 변환시킨 표준 번호 체계예요.

예를 들어

가 → U+AC00
A → U+0041

이런 식으로 대응된답니다.

다시 돌아와서, RLO 문자가 유니코드 U+202E인 것을 이해하셨다면 추가적인 의문이 드시지 않나요?

어떻게 이 코드를 삽입하여 확장자를 교란시킬 수 있을까요?

실습한 과정을 소개해 드릴 테니, 이전의 확장자 위장과 비교하며 공부해 보아요!

↪️ 유니코드 우회 실습

그림 17. [.exe 실행 파일]

그림 17. [.exe 실행 파일]

이전 실습처럼 파일 탐색기에서 파일 확장명 보기 옵션을 켜준 후 아무 실행 파일 하나를 준비합니다.

그림 18. [Windows PowerShell 관리자 권한으로 실행]

그림 18. [Windows PowerShell 관리자 권한으로 실행]

PowerShell을 관리자 권한으로 실행합니다.

그림 19. [.exe 실행 파일 위치로 이동]

그림 19. [.exe 실행 파일 위치로 이동]

먼저 cd 디렉터리 이동 명령어를 통해 오하아사 시스템의 파일 위치로 이동해줍니다. 그다음 유니코드를 삽입하면 되는데요,

1
2
$RLO = [char]0x202E
Rename-Item -Path "오하아사 시스템.exe" -NewName ("photo" + $RLO + "gpj.exe")

입력한 명령어입니다. 한 줄씩 설명해 드릴게요.

$RLO = [char]0x202E

  • 0x202E는 유니코드 제어 문자로 텍스트 방향을 오른쪽 → 왼쪽 (RTL) 으로 바꿉니다.
  • 이 문자를 변수 $RLO에 저장합니다.

Rename-Item -Path “오하아사 시스템.exe” -NewName (“photo” + $RLO + “gpj.exe”)

  • 원래 파일 이름: 오하아사 시스템.exe
  • 변경할 이름:
    • "photo" + RLO + "gpj.exe" → RLO 속성으로 뒷부분이 거꾸로 표시되어 눈에 보이는 형태는 photoexe.jpg
    • 하지만 실제로는 .exe 확장자
  • Rename-Item은 PowerShell에서 파일 이름을 바꾸는 명령어입니다.

즉, 이 명령 내용은 확장자가 jpg인 척하지만 실제로는 exe인 실행파일을 만들기 위한 속임수인 것입니다.

그림 20. [photoexe.jpg 파일]

그림 20. [photoexe.jpg]

실제로 확인해 보니, 이렇게 확장자가 뒤집힌 상태가 되었습니다. 파일 확장명 보기 속성을 꺼 볼까요?

그림 21. [photo.jpg 파일]

그림 21. [photo.jpg]

짜잔✨ 이렇게 사용자의 눈에 마치 이미지 파일처럼 보이시는 것을 확인하실 수 있습니다.

이 파일 역시도 아이콘만 바꾼다면 이미지 파일로 착각시킬 수 있겠죠?

별도의 도구 설치가 필요하지 않고 윈도우에 내장되어 있으니, 두 실습은 꼭 따라 해보시기를 추천드립니다!💪

확장자 위장이 아닌 다른 위장 기법도 있는데요, 이어서 함께 알아봅시다.

📁 시스템 폴더 및 드라이버 위장이란?

시스템 폴더 및 드라이버 위장이란, 악성 파일이 윈도우 시스템 파일처럼 보이도록 이름과 위치를 위장하는 방식입니다. 악성코드가 자신의 정체를 숨기기 위해 가장 자주 사용하는 은닉 기법 중 하나로, 백신 탐지를 회피하고 보안 분석가의 초기 시선을 교란시키기도 합니다.

시스템 위장 기법의 유형을 소개해 볼게요.

파일명 위장

파일명 위장이란, 실제 윈도우 시스템 파일 이름과 동일한 이름을 사용하는 방식입니다.

악성 코드 실행 파일을 윈도우 환경에서 많이 쓰는 파일명으로 둔갑합니다.

대표적으로

lsass.exe 로그인 세션 관리자
winlogon.exe 로그인 창 프로세스
svchost.exe 서비스 관리자

다음과 같은 이름이 자주 쓰입니다.

일반 사용자 입장에서는 🤷
윈도우 주요 시스템 파일들은 축약된 이름이나 기술적인 명칭들을 사용하므로 파일명과 역할 매핑 자체가 어려워요.

또한

  • 이런 파일들은 대부분 숨겨진 시스템 폴더에 있고,
  • 작업 관리자에서도 이름만 나타날 뿐 상세한 설명은 거의 없습니다.
  • 따라서 평소에 이런 프로세스를 구분하거나 의심할 기회조차 없는 환경인 것이죠.

악성 코드는 이걸 노립니다.

파일명 위장 예시

예를 들어 lsass 위장 악성코드의 경우,

정상적인 lsass.exe 의 위치는 C:\Windows\System32\lsass.exe 이지만,
악성 위장 파일의 위치는 C:\Users\Public\lsass.exe 입니다.

일반인은 이 둘이 다른지조차 구별하지 못하고, 심지어 작업 관리자에선 둘 다 그냥 “lsass.exe”로 보이기 때문에 더더욱 탐지가 어려운 것입니다.

하지만 우리에게도 의심의 기회는 있습니다.

바로 파일이 System32 디렉터리 안에 있는지 확인해 보는 것인데요,

파일이 System32에 없다면 쉽사리 실행해서는 안 됩니다.❎

그림 22. [System32 파일]

그림 22. [System32 파일]

실제로 내 PC에 검색해 보면 System32 파일을 확인해 보실 수 있을 거예요.
윈도우 시스템에서 정상적인 시스템 파일들은 대부분 이 폴더에 위치하게 됩니다.

일부 보안 시스템은 ‘경로 기반 예외 처리’라는 것을 하는데요,

예를 들어 파일 위치가 C:\Windows\System32 (System32) 라면 허용하지만,
D:\tmp일 경우에는 실행 시 경고하거나 차단합니다.

경로 자체가 신뢰의 기준으로 쓰이는 것이죠.

그렇다면 위치를 확인한다면 악성 코드를 걸러낼 수 있을까요? 🤔

안타깝게도, 그렇지 않습니다.😂 다른 시스템 위장 유형이 남아있기에 안심하기엔 이릅니다.😩💨

위치 위장

우리는 이제 윈도우 운영체제가 특정 디렉터리를 신뢰된 시스템 경로로 간주한다는 사실을 알고 있습니다.

이러한 파일 위치가 C:\Windows\System32 말고도 C:\Windows\drivers, C:\Program Files\Common Files 등 몇 가지 더 있는데요, 그렇다면 파일을 이러한 경로에 옮겨 넣는다면 어떻게 될까요?

C:\Windows\System32에 있으면 대부분의 사용자는 “정상 시스템 파일이겠지”라고 생각하여 사용자 의심이 감소하고,📉

일부 백신/EDR은 이 경로에 있는 파일은 무해한 것으로 간주하고 예외 처리하여 보안 프로그램의 허용 대상이 되며,💊

UAC (사용자 계정 컨트롤) 우회 시도에 이용되거나, 드라이버 폴더(drivers) 혹은 공유 라이브러리(Common Files)에 있으면 시작 시 자동 로드되는 컴포넌트처럼 자동 실행에 성공할 수 있게 됩니다.👻

주요 경로별 위장 목적과 예시를 알아볼까요?

위치 위장 예시

C:\Windows\System32

  • 윈도우 핵심 실행파일(EXE), 시스템 도구(DLL), 서비스용 실행 파일이 존재합니다.
  • 해당 위치에 위장하면 svchost.exe, lsass.exe, cmd.exe 등과 혼동하기 쉽습니다.

예: svch0st.exe ← ‘0’을 넣은 유사 이름으로 시스템 파일처럼 위장이 가능합니다.

C:\Windows\System32\drivers

  • 커널 드라이버(.sys) 파일들이 위치합니다.
  • .exe.dll도 해당 위치에 놓을 경우, 드라이버(운영체제와 하드웨어 장치 사이의 중계 역할을 하는 소프트웨어)처럼 보이게 하거나, 실제 드라이버로 로드 시도할 수 있습니다.
  • 일부 악성코드는 실제 .sys로 위장하고 서비스로 등록하여 부팅 시 자동 실행합니다.

예: intel.sys, dxgmms2.sys 같은 이름으로 위장이 가능합니다.

C:\Program Files\Common Files

  • 여러 프로그램이 공유하는 라이브러리나 서비스 파일이 위치합니다.
  • 해당 경로에 update.exe, helper.dll, servicehost.exe 같은 모호한 이름의 파일을 넣어 정상 백그라운드 프로세스처럼 위장할 수 있습니다.

예: C:\Program Files\Common Files\Adobe\updater.exe

해당 위치에 들어간 파일이라고 해서 전부 믿을 수 있는 파일은 아니라는 사실, 이제 아셨죠?

그렇다면 이러한 파일들의 신뢰성은 어떻게 검증할까요?

바로 ‘디지털 서명’이라는 개념입니다.

🔏 디지털 서명이란?

디지털 서명이란, 파일이 신뢰할 수 있는 개발자나 회사에 의해 만들어졌다는 것을 증명하는 전자적 인증 도장입니다.

정상 시스템 파일은 보통 Microsoft 서명 Microsoft Windows Publisher이 존재한답니다.

그림 23. [Microsoft Windows Publisher 디지털 서명]

그림 23. [Microsoft Windows Publisher 디지털 서명]

이렇게 말이죠. 실제 System32 디렉터리에 들어가 실행 파일의 디지털 서명을 확인해 보았는데요,

서명을 확인하는 법은 간단합니다.
파일에서 오른쪽 마우스를 클릭해 속성 탭에 들어가기만 하면 되고, 만약 디지털 서명이라는 탭 자체가 존재하지 않는다면 이는 거짓 파일일 가능성이 기하급수적으로 올라가는 것이죠.📈

그렇다면 디지털 서명이 있는 경우는 무조건 믿을 수 있을까요?

우선 Microsoft, Adobe, NVIDIA처럼 유명 회사인지 확인해 볼 수 있는데요, 그래도 찝찝함이 가시지 않으신다구요? 🧐 그런 여러분을 위한 유효성 검증 기준과 도구가 준비되어 있답니다.

그림 24. [인증서 정보 타임스탬프]

그림 24. [인증서 정보 타임스탬프]

속성 → 디지털 서명 → 고급 탭에 들어가면 인증서를 볼 수 있는데요, 서명 당시 시점과 유효 기간이 존재하는 것을 알 수 있습니다. 이렇게 타임스탬프⏰가 존재해야 믿을 만한 서명이 되는 것이죠.

대량의 파일을 검증하기 위해서는 일일이 인증서를 확인하기 어려우니 도구를 설치해 봅시다.

🔗 Sigcheck 다운로드 링크

Sigcheck는 파일 버전 번호, 타임스탬프 정보, 인증서 체인을 포함한 디지털 서명 상태를 정확히 확인할 수 있는 명령줄 도구로, Microsoft가 공식적으로 개발했어요.

그림 25. [cmd 관리자 권한 실행]

그림 25. [cmd 관리자 권한 실행]

Sigcheck를 설치했다면 윈도우에서 cmd를 찾아 관리자 권한으로 실행해 줍니다.

그림 26. [cmd에 명령어 입력하기]

그림 26. [cmd에 명령어 입력하기]

입력한 명령인데요,

먼저 cd 명령어를 통해 Sigcheck 위치로 이동합니다. 그다음 명령에는 옵션이 붙습니다.

sigcheck.exe -u -e -s “C:\Windows\System32”

  • u: 서명되지 않은 파일만 표시
  • e: 실행 파일만 검사
  • s: 하위 디렉터리 포함

요약하자면 System32 디렉터리 안에 있는 실행 파일들 중에서 서명되지 않은 파일을 찾아내라는 거예요.

그림 27. [명령어 실행 결과]

그림 27. [명령어 실행 결과]

제 실행 결과는 이러했는데요, 대표적으로 두 파일의 해석을 함께 살펴볼까요?

  1. DMRDecoder.dll
  • Verified: 글자가 깨졌지만, 서명은 유효한 것으로 보임
  • Link date: 2024-12-17
  • Publisher: Microsoft Azure Code Signing

이 파일은 결론적으로 의심할 필요가 없다는 진단을 받았는데요,

그 이유는 어쨌든 마이크로소프트 공식 서명이 있고 Azure 관련 시스템 구성 요소일 가능성 높기 때문이에요.

반면 위험성을 띤 파일도 있었답니다.

  1. HNCEPPRMONP.dll
  • Verified: Unsigned → 디지털 서명이 없음
  • Publisher: Hancom Inc. (한컴)
  • Description: Hancom PDF Port Monitor
  • 파일 생성일: 2023-07-10
  • 파일 위치: C:\Windows\System32

이 파일은 의심 대상이에요. System32 안에 있으나 디지털 서명이 없기 때문인데요,

Publisher 이름만 ‘Hancom Inc.’로 적혀 있어 정식 한컴 소프트웨어인지 확인이 필요하다고 해요.

또 파일명이 한컴의 실제 드라이버 이름인지 조사해 보아야 할 것 같습니다.😱

의도치 않게 위조 파일의 예시를 찾아버렸네요. 준비한 내용 어떠셨나요?

오늘은 어쩌면 우리가 가장 자주, 자연스럽게 또 많이 접하던 ‘파일’이라는 존재를 의심해 보았는데요,

유쾌한 시간이 되었기를 바랍니다.😝

다음에 더 재밌는 주제로 찾아올게요!🫡 안녕!👋


참고자료

경향신문. (2014.). ‘사이버 저격수’ 스턱스넷 웜 감염경로 확인. https://www.khan.co.kr/article/201411141654131?utm_source=chatgpt.com

PICUS. (2024.). Masquerading Attacks Explained - MITRE ATT&CK T1036. https://www.picussecurity.com/resource/masquerading

EST SECURITY. (2017.). 확장자 숨겨 악성파일 열어보게 만드는 메일 유포… 고소장, 방 예약 문의 등으로 위장해 랜섬웨어 감염. https://blog.alyac.co.kr/940

LOGPRESSO. (2025.). [위협 분석] 한글 문서로 위장한 두 공격 그룹의 악성코드 비교. https://logpresso.com/ko/blog/2025-03-04-comparison-of-malware-disguised-as-a-hangul-document?utm_source=chatgpt.com

Guillaume Bonfante, Jean-Yves Marion, Fabrice Sabatier, Aurélien Thierry. (2014.). Analysis and Diversion of Duqu’s Driver. https://arxiv.org/abs/1401.6120

CROWDSTRIKE. (2024.). CrowdStrike Falcon Prevents Multiple Vulnerable Driver Attacks in Real-World Intrusion. https://www.crowdstrike.com/en-us/blog/falcon-prevents-vulnerable-driver-attacks-real-world-intrusion/?utm_source=chatgpt.com

Microsoft Ignite. (2025.). SignTool을 사용하여 파일 서명 확인. https://learn.microsoft.com/ko-kr/windows/win32/seccrypto/using-signtool-to-verify-a-file-signature