새로운 접근 방식은 LLM 기반 침투 테스트(pentest) 에이전트가 단순히 침해를 주장하는 대신, 오탐(false positive)을 제거하는 챌린지-응답 논스(challenge-response nonces)를 사용하여 침해를 증명하도록 강제합니다. HALO 프레임워크에서 입증된 이 기술은 "셸을 획득한 것 같다"를 "실제로 셸을 획득했다"로 바꿉니다.
오탐(false-positive) 침해가 중요한 이유
대규모 언어 모델(LLM)을 기반으로 구축된 자동화된 익스플로잇 엔진은 단 한 번의 실행으로 수십 개의 "성공적인" 포트 침해 결과를 쏟아낼 수 있습니다. 많은 서비스가 배너에 "uid=0"과 같은 문자열을 그대로 출력하며, 정교하게 설계된 타겟은 공격자의 코드를 전혀 실행하지 않고도 이러한 출력을 흉내 낼 수 있습니다. 에이전트가 이러한 출력값을 신뢰하게 되면, 피벗(pivot), 데이터 유출(exfiltrate), 또는 측면 이동(lateral movement) 여부를 결정하는 모든 후속 결정이 거짓에 기반하게 됩니다. 보안 팀은 존재하지 않는 거점을 추적하느라 시간을 허비하게 되고, 침해 사고 대응팀은 실제 위협의 우선순위를 잘못 설정할 수 있습니다.
주장을 증명으로 전환하기
이 해결책은 고전적인 인증 기법에서 아이디어를 얻었습니다. 익스플로잇을 실행하기 전에 공격자의 시스템은 고유한 토큰, 즉 논스(nonce)를 생성하여 페이로드에 포함합니다. 컨트롤러가 결과를 실제 침해로 인정하려면 익스플로잇이 정확히 해당 토큰을 반환해야 합니다. 가짜 배너는 논스를 추측할 수 없으며, 응답에 토큰을 포함하려면 반드시 공격자의 코드를 실행해야만 합니다. 반환된 데이터에 일치하는 논스가 없다면, 해당 시도는 오탐으로 간주되어 폐기됩니다.
이러한 변화는 검증 모델을 "출력이 올바른 것 같다"에서 "출력이 실행을 증명한다"로 바꿉니다. 이는 자율형 공격 도구들을 괴롭히는 낙관 편향(optimism bias)을 제거합니다.
신뢰할 수 있는 전달 사다리 구축하기
페이로드를 타겟에 전달하려면 여전히 견고한 전달 체인이 필요합니다. HALO는 세 가지 일반적인 경로를 분류합니다:
- Reverse shells – 침해된 호스트가 공격자가 제어하는 리스너로 연결을 역으로 시작합니다. 인바운드 트래픽이 차단된 경우 유용합니다.
- Bind shells – 공격자가 타겟의 리스닝 서비스에 직접 연결합니다. 아웃바운드 필터가 느슨할 때 작동합니다.
- Blind callbacks – 직접적인 채널을 열 수 없는 매우 제한된 환경에서 실행을 확인하는 단방향 신호(예: DNS 요청)입니다.
사다리의 각 단계는 논스를 보존해야 하며, 그렇지 않으면 후속 단계에서 증명 과정이 실패합니다.
독립형(self-contained) 익스플로잇 보장하기
잘못된 확신의 또 다른 원인은 타겟에 없을 수도 있는 외부 라이브러리에 의존하는 것입니다. HALO는 배포 전에 필요한 모든 구성 요소를 단일 파일로 번들링합니다. 그런 다음 원래의 종속성이 의도적으로 결여된 샌드박스에서 번들을 테스트합니다. 익스플로잇이 여전히 실행된다면, 해당 아티팩트는 진정으로 독립형이며 보안이 강화된 시스템에서도 신뢰할 수 있습니다.
개발 흔적 정리하기
공개 출시를 준비하는 동안, 저자는 Git 히스토리에 실제 IP 주소가 남아 있는 것을 발견했습니다. 작업 트리를 깨끗하게 만든다고 해서 해당 기록이 삭제되지는 않습니다. Git은 모든 커밋을 유지하기 때문입니다. 저자는 저장소를 단일한 깨끗한 커밋으로 다시 작성하고, 유출된 주소를 RFC 5737에 정의된 문서 전용 범위(예: 192.0.2.0/24)로 교체했습니다. 이는 도구가 공유될 때 운영 인프라가 실수로 노출되는 것을 방지합니다.
보안 도구를 위한 실무 규칙
- 모든 테스트 픽스처(test fixture)에 문서 전용 IP 범위를 사용하십시오.
- 초기 커밋에서 비밀 정보와 스코프 파일을 제거하십시오.
- 주장된 모든 침해를 검증하기 위해 챌린지-응답 논스를 적용하십시오.
- 느슨하게 관련된 스크립트가 아닌, 실제로 배포될 정확한 파일을 검증하십시오.
증명이 낙관보다 강력합니다. 자율형 침투 테스트 에이전트가 검증 가능한 토큰을 제시하도록 강제함으로써, HALO는 타겟이 공격자의 코드를 실행했음을 증명할 수 있을 때만이 진정한 침해임을 보여줍니다. 관문(gate)을 먼저 구축하십시오. 그 외의 모든 것은 그 뒤를 따릅니다.
