실행 파일(EXE 파일)은 사용자가 파일 아이콘을 클릭했을 때 시스템이 실행하도록 설계된, 인코딩된 명령어 집합을 담고 있는 컴퓨터 파일입니다. 실행 파일은 일반적으로 .exe 확장자를 가지지만, 실제로는 그 외에도 수백 가지의 실행 파일 형식이 존재합니다.
일부 실행 파일 유형은 별도의 프로그램 없이도 호환되는 시스템에서 곧바로 실행될 수 있으며, 이런 파일들은 높은 보안 위험을 초래하는 것으로 간주됩니다. 여기에는 EXE, BAT, COM, CMD, INF, IPA, OSX, PIF, RUN, WSH 등이 포함됩니다.
마이크로소프트 윈도우에서 EXE는 실행 파일을 나타내는 확장자입니다. 즉, 모든 EXE 파일은 실행 파일이지만, 모든 실행 파일이 EXE 파일인 것은 아닙니다.
실행 파일의 대표적인 예
실행 파일은 주로 특정 작업을 수행하거나, 응용 프로그램을 설치 또는 실행하기 위해 만들어집니다.
예를 들어, 사용자가 화면의 문서 편집기 아이콘을 더블클릭하면 실행 파일이 트리거되어 마이크로소프트 워드(Microsoft Word) 같은 워드 프로세서가 컴퓨터에서 구동됩니다.
실행 파일은 특정 컴퓨터 작업을 수행하게 할 수도 있습니다. 예를 들어 리눅스 사용자가 명령줄에 실행 파일 이름을 입력하고 Enter 키를 누르면, 해당 파일이 데이터 백업과 같은 작업을 실행합니다.
사용자는 파일 이름 구조만 보고도 실행 파일의 용도를 짐작할 수 있는 경우가 많습니다. 새 응용 프로그램을 설치하는 목적이라면 setup.exe처럼 이름이 붙는 경우가 많고, 급여 관리(Payroll) 프로그램을 구동하는 목적이라면 payroll.exe처럼 지정되는 식입니다.
EXE 파일은 어떻게 작동할까?
EXE 파일은 윈도우 전용 실행 파일 형식입니다. 사용자의 조작이나 특정 이벤트가 실행 파일을 트리거하면, 컴퓨터는 파일에 담긴 코드를 실행합니다.
실행 파일은 소스 코드를 컴파일한 결과물인 바이너리 기계어 코드(binary machine code)를 포함합니다. 이 저수준(low-level) 코드는 컴퓨터 프로세서(CPU)에게 프로그램을 어떻게 실행할지 지시하며, CPU는 이를 해석해 컴퓨터 하드웨어에 수행할 작업을 전달합니다.
즉, 실행 파일은 컴퓨터와 직접 통신하며 실행할 명령어 집합을 전달합니다. 반면 데이터 파일은 기계가 활용하기 전에 반드시 다른 프로그램이 해석하거나 파싱해야 하며, 스크립트 등 데이터 파일은 일반 텍스트(plaintext)로 작성됩니다.
실행 파일은 기본 텍스트 편집기나 통합 개발 환경(IDE)으로 만들 수 있습니다. 텍스트 편집기를 사용할 경우, 파일을 기계어로 변환하려면 별도의 컴파일러가 필요합니다. 반면 IDE는 컴파일 과정을 자동화하고, 구문 오류를 자동으로 찾아내며 다양한 구문 요소를 색상으로 구분해 보여주는 기능도 갖추고 있습니다.
요약하면, 소스 코드는 컴파일 과정을 거쳐 실행 파일로 변환되며, 이 과정에서 실행 파일을 다른 프로그램들과 연결해 주는 동적 링크 라이브러리(DLL) 파일이 함께 추가됩니다.
EXE 파일을 실행하는 방법
EXE 파일은 파일을 열 때 실행되도록 트리거되며, 구체적인 방식은 운영체제마다 다릅니다. 대표적인 두 가지 예는 다음과 같습니다.
- GUI 환경: 그래픽 사용자 인터페이스(GUI) 기반 운영체제(OS)에서는 파일 아이콘이나 파일 이름을 클릭하면 파일이 열리고 실행됩니다. 예를 들어 윈도우에서는 파일을 더블클릭하면 됩니다.
- CLI 환경: 명령줄 인터페이스(CLI) 운영체제에서는 올바른 구문과 함께 파일 이름을 입력한 뒤 Enter 키를 눌러 실행합니다. 예를 들어 리눅스나 유닉스에서는 파일 이름 앞에 점과 슬래시를 붙여
./filename처럼 입력하면 filename 파일이 실행됩니다.
경우에 따라 EXE 파일은 사용자 개입 없이 수동적으로 실행되기도 합니다. 예를 들어 윈도우의 AutoPlay와 AutoRun은 특정 이벤트 발생 시 파일을 자동으로 실행합니다. USB 장치를 연결하면 해당 장치의 펌웨어가 자동으로 구동되는 것이 대표적이며, 윈도우 시작 폴더(startup folder)에 있는 실행 파일 역시 시스템 부팅 시 자동으로 실행됩니다.
.exe 확장자는 매우 흔하지만 어디까지나 윈도우 실행 파일에만 해당됩니다. 맥(macOS)의 실행 파일은 APP 확장자를 사용합니다. 따라서 맥에서 EXE 파일을 실행하려면 부트캠프(Boot Camp) 유틸리티를 사용하거나, 윈도우 환경을 재현하는 가상 머신 또는 에뮬레이터를 활용해야 합니다.
실행 파일이 안고 있는 악성코드 위험
EXE 파일에는 악성코드(멀웨어)가 숨어 있을 수 있습니다. 공격자는 악성 실행 파일을 다른 확장자 뒤에 위장해 배포하기도 합니다.
파일 이름에서 마지막 마침표 뒤의 문자열이 파일 유형을 결정하는데, 윈도우는 설정에 따라 파일 확장자를 표시하지 않기 때문에 사용자가 파일의 실제 유형을 파악하기 어려울 수 있습니다.
예를 들어 trustedfile.pdf.exe라는 파일은 확장자가 숨겨져 있으면 trustedfile.pdf로 표시되어 평범한 PDF처럼 보입니다. 사용자는 PDF를 열 것으로 기대하며 클릭하지만, 실제로는 악성 코드가 담긴 실행 파일이 트리거되어 사용자의 PC, 안드로이드 스마트폰, 아이폰에 바이러스 같은 악성코드를 설치하게 되는 것입니다.
따라서 EXE 파일의 출처를 확인하고, 원치 않는 이메일로 첨부되어 도착했는지 살펴보는 것이 안전 여부를 판단하는 데 큰 도움이 됩니다. 출처가 불확실하다면 백신·안티멀웨어 스캐너로 파일을 검사하거나, 기계어 코드를 어셈블리 코드로 역변환한 뒤 악성 기능이 있는지 분석하는 정적 분석(static analysis)을 직접 수행하는 방법도 있습니다.
EXE 파일을 더 안전하게 사용하는 5가지 방법
조직은 다음과 같은 방법으로 EXE 파일 사용 시 보안 위험을 크게 줄일 수 있습니다.
- 사용자 보안 교육 실시: 알고 신뢰할 수 있는 출처의 링크와 첨부 파일만 클릭하도록 사용자를 교육하면, 바이러스나 악성코드가 조직으로 유입될 위험을 줄일 수 있습니다.
- 코드 서명 인증서 도입: 신뢰할 수 있는 인증 기관(CA)이 발급한 인증서를 활용해 사용자 신원을 검증하고, 실행 파일이 합법적인 출처에서 왔음을 보장할 수 있습니다.
- 백신·안티멀웨어로 이메일 검사: 네트워크 관리자는 모든 실행 파일 확장자를 대상으로 악성코드 검사를 수행해야 하며, Microsoft Windows Security를 활용해 EXE 파일의 바이러스 감염 여부를 확인할 수도 있습니다.
- 프로그램 신뢰 수준 설정: 네트워크 관리자는 모든 문서, 코드, 매크로를 기본적으로 '신뢰하지 않음'으로 지정하는 신뢰 정책을 채택할 수 있습니다. 이 경우 사용자는 IT 부서에 요청하고 접근 권한을 부여받아야만 해당 자산을 매크로·스크립트가 포함된 신뢰 상태로 전환할 수 있습니다.
- 위험 확장자 첨부 파일 차단 또는 격리: DOCM 같은 고위험 확장자와 ZIP, RAR 같은 압축 파일은 피하고, 조직의 보안 솔루션이 이런 확장자를 가진 메시지나 첨부 파일을 자동으로 차단하거나 격리하도록 설정해야 합니다.
악성코드를 유포하는 실행 파일은 매우 중대한 사이버 보안 위협입니다. 실행 파일 기반 악성코드를 비롯한 각종 사이버 위협에 대비하려면, 사전 예방 중심의 강력한 사이버 보안 계획을 수립하는 것이 필수적입니다.