본문 바로가기
코딩취미/프로그램 지식

NSIS 고급 활용 시리즈 ⑰ – 배포용 설치기 서명과 보안 적용 전략

by 브링블링 2025. 6. 10.
반응형

NSIS 고급 활용 시리즈 ⑰ – 배포용 설치기 서명과 보안 적용 전략

배포용 설치기는 일반적인 설치기와 달리 운영체제 보안 정책, 사용자 UAC 동의, 악성코드 탐지 회피 등을 고려해야 합니다.


✅ 핵심 보안 항목 요약

항목 설명
디지털 서명 Windows SmartScreen 우회 및 배포자 신뢰 확보
관리자 권한 요청 시스템 폴더 설치, 레지스트리 설정 시 필수
무결성 보호 설치기 위변조 방지
실행 파일 제한 경로 및 해시 기반 화이트리스트 확보

🔏 ① 디지털 서명 (코드 서명)

설치 프로그램에 디지털 서명을 하면 다음과 같은 효과가 있습니다:

  • Windows SmartScreen 필터를 우회
  • 실행 시 “신뢰할 수 없는 배포자” 경고 제거
  • 실행 이력 추적 가능

예: SignTool.exe로 서명하기

signtool sign /f "mycert.pfx" /p [비밀번호] /tr http://timestamp.digicert.com /td sha256 /fd sha256 MyInstaller.exe

 

옵션 설명:

  • /f: 인증서 경로 (예: PFX 형식)
  • /p: 인증서 비밀번호
  • /tr: 타임스탬프 서버 주소
  • /fd: 해시 알고리즘

인증서는 [Digicert, Sectigo, GlobalSign] 등에서 구매 가능


🛡️ ② UAC 관리자 권한 요청

NSIS에서 기본 설정만으로 관리자 권한 요청이 가능:

RequestExecutionLevel admin
옵션 설명
user 현재 사용자 권한으로 설치 (제한적)
highest 가능한 한 높은 권한 요청
admin UAC 요청 후 관리자 권한으로 설치

프로그램이 Program Files, HKLM, System32에 접근한다면 반드시 admin 필요

반응형

🔐 ③ 무결성 확인 (SHA256 해시)

배포 파일에 해시 정보를 제공하면 사용자가 위변조 여부를 검증할 수 있습니다.

해시 생성 예시:

certutil -hashfile MyInstaller.exe SHA256

 

출력 예:

 
9a34ab7e83c3c45fa7b7a21329d34c73458e2e3b720b194a86aa5babe8e4c491

이 해시값을 배포 페이지에 함께 기재


📌 ④ 실행 위치 제한 (경로 검증)

설치기가 특정 경로 외에서 실행되는 것을 제한:

Function .onInit
  StrCpy $0 "$EXEDIR"
  ${IfNot} ${FileExists} "$0\whitelist.txt"
    MessageBox MB_ICONSTOP "지정된 위치 외에서는 설치할 수 없습니다."
    Abort
  ${EndIf}
FunctionEnd

복사 유통/위변조 방지용


📁 ⑤ 설치기 압축 후 Integrity 검증 기능 추가 (NSIS 내장)

NSIS는 설치기에 자동 무결성 체크를 포함:

CRCCheck on

기본값은 on이며, 설치기 실행 시 자동 검증 수행됨


🧰 보안 최종 팁 요약

  • NSIS 설치기 제작 후 반드시 SignTool로 서명
  • /S 자동 설치 기능은 신뢰된 경로에서만 허용
  • UAC 사용자는 사용자 안내 텍스트 제공
  • 가능하면 NSIS UI 내 배포자 정보 표시
반응형