서비스를 배포하고 나면 밖에서 봤을 때 뭐가 노출되는지 한 번씩 확인하게 됩니다. 블랙박스로 공격 표면을 훑는 작업인데, 손으로 하나하나 하다 보면 품이 꽤 듭니다. 배포할 때마다 처음부터 다 돌리기도 번거롭고요.
그래서 이 과정을 자동화하려고 pentesting이라는 자율 보안 에이전트를 직접 만들었습니다. 사내 업무에 붙여서 쓰고 있는데 쓸만해서 간단히 정리해 둡니다.
목표를 하나 던져주면 알아서 정찰, 탐색, 검증까지 돌리는 공격형 보안 에이전트입니다.
가장 자주 쓰는 건 배포 직후 블랙박스 점검입니다. 스테이징이나 운영에 새 버전을 올린 뒤 목표만 하나 넘겨주면 됩니다.
docker run --rm -it --init \
--cap-add=NET_RAW --cap-add=NET_ADMIN \
--env OPENAI_API_KEY="..." \
--env OPENAI_MODEL="..." \
-v ${PWD}/workspace:/workspace \
-v ${PWD}/runs:/state \
agnusdei1207/pentesting:latest \
run --goal "대상을 조사하고 노출된 공격 표면을 찾아줘" --workspace /workspace --run /state/current
그러면 평소에 체크리스트 들고 찍어보던 지점들을 알아서 꽤 많이 긁어옵니다. 열려 있는 엔드포인트, 노출된 경로, 설정 실수로 밖에서 보이는 것들처럼 배포 과정에서 놓치기 쉬운 공격 표면을 초반에 잘 잡아줍니다. 사람이 정밀하게 보기 전에 1차로 넓게 훑어주는 용도로 쓰면 시간이 많이 줄어듭니다.
전부 자동으로 맡겨야 하는 건 아닙니다. 직접 점검하다 막힐 때 코파일럿처럼 옆에 두고 쓰기도 좋습니다. 어디를 파고들지 아이디어를 던져주거나, 놓친 각도를 짚어주는 식으로요. 손은 직접 움직이더라도 다음 수를 고민하는 부담은 줄어듭니다.
자동화가 사람 판단을 대체하진 않습니다. 다만 배포 후 넓게 한 번 훑는 반복 작업은 맡겨두기 좋습니다. 초반 정찰에서 자유로워지는 만큼 중요한 검증에 집중할 수 있습니다.
관심 있으면 레포 한번 봐주세요. 이슈나 PR은 언제든 환영합니다.
👉 github.com/agnusdei1207/pentesting
⚠️ 모의해킹 도구는 본인 소유이거나 명시적으로 승인받은 대상에만 사용하세요.