macOS 환경에서 Windows Defender 비활성화 도구 'defendnot' 개발 여정: 리버스 엔지니어링과 장애물 극복기
🤖 AI 추천
이 콘텐츠는 제한적인 개발 환경(macOS arm64)에서 Windows 보안 기능을 우회하는 도구를 개발하는 과정에서 겪는 기술적 난관과 이를 극복하는 과정에 대한 깊이 있는 경험을 공유합니다. 특히 리버스 엔지니어링, COM API, 프로세스 인증 메커니즘 등에 대한 실무적인 문제 해결 경험을 배우고 싶은 보안 연구원, 시스템 엔지니어, 또는 윈도우 내부 동작에 관심 있는 개발자들에게 매우 유용합니다.
🔖 주요 키워드
핵심 기술
본 콘텐츠는 no-defender
프로젝트의 기술적, 법적 한계를 극복하기 위해 Windows Security Center(WSC) 서비스 API를 직접 활용하여 Windows Defender를 비활성화하는 도구 defendnot
을 개발한 경험을 공유합니다. 특히 제한된 macOS arm64 환경에서 겪은 리버스 엔지니어링 및 디버깅의 어려움과 이를 해결하기 위한 과정에 초점을 맞추고 있습니다.
기술적 세부사항
- 프로젝트 배경: 이전
no-defender
프로젝트의 법적 문제(DMCA 삭제 요청)를 회피하고 기술적 한계를 극복하기 위해 시작되었습니다. - 개발 환경 제약: x86 환경 없이 arm64 MacBook에서 원격 디버깅(고지연 환경)을 수행하며 겪은 어려움과 해결 과정이 상세히 묘사됩니다.
- WSC API 활용: WSC의 COM API를 사용하여 Defender 등록을 시도했으나, API 호출 프로세스의 서명 검증 및 인증 과정에서 Access Denied 오류를 경험했습니다.
- 인증 우회 시도: AV 프로세스에 모듈을 인젝션하여 등록을 시도하거나, 서명된 시스템 프로세스(cmd.exe)를 통해 실행하는 등 다양한 방법을 시도했습니다.
- PPL 검증:
PPL(Protected Process Light)
검증 실패 경험을 공유하며, 특수 드라이버를 사용한 우회 시도 및 WinDefend SID 토큰 확인 메커니즘 분석 과정을 설명합니다. - SID 모방 실험: WinDefend SID를 가진 프로세스를 모방하여 인증 절차를 우회하려 했으나, 초기 시도에서는 등록이 이루어지지 않는 문제를 겪었습니다.
- SID 체크 미통과 원인 분석: 권한 상승, 바이너리 서명, PE 헤더의
DllCharacteristics
플래그(ForceIntegrity) 등 추가적인 검증 요소를 분석했습니다. - IPC 및 이름 전달 개선: Taskmgr.exe 대상 실험 중 발생한 이름 전달 오류 및 IPC 버그를 해결하기 위해 파일 경로 추론 및 AV 이름 전달 방식을 개선했습니다.
- 자동 실행 기능 구현: 자동 실행 구현 시 작업 스케줄러의 'AC 전원 연결 시 실행' 옵션으로 인한 간헐적 실패를 겪고, 설정을 해제하여 정상 동작을 확인했습니다.
- 삽질 경험 중심: 기술적 세부 사항보다는 실제 환경에서 겪은 문제와 시행착오(삽질 경험)를 중심으로 서술되어 실무적인 공감을 얻습니다.
개발 임팩트
제한된 환경에서도 복잡한 시스템 내부 메커니즘을 리버스 엔지니어링하고 문제를 해결하는 능력을 보여줍니다. 특히 Windows 보안 아키텍처 및 프로세스 통신에 대한 깊이 있는 이해를 바탕으로 실제 동작하는 도구를 개발하는 과정은 다른 개발자들에게 실질적인 문제 해결 인사이트를 제공할 수 있습니다.
커뮤니티 반응
이전 프로젝트(no-defender
)는 약 1,500개의 Star를 얻으며 큰 관심을 받았으나, 이후 안티바이러스 업체의 DMCA 삭제 요청으로 인해 소스 코드를 삭제하게 된 배경을 언급합니다. 이는 보안 도구 개발 시 발생할 수 있는 법적 및 윤리적 문제에 대한 경각심을 일깨웁니다.