← 아티클 목록

개발일지CJ AI Security Wave 최종 프로젝트(AI를 활용한 침투테스트) →

최종 발표에서는 기능보다 실행과 승인 과정을 보여 줬다

만든 기능을 모두 설명하려던 발표를 고치고 실제 작업 과정을 보여 주려 했다. 발표에서 받은 질문과 프로젝트를 마친 뒤의 아쉬움을 적었다.

목차 4

8월 31일 심사위원과 멘토 앞에서 최종 발표를 했다.

질문 하나가 아프게 들어왔다. GitHub 개인 액세스 토큰(PAT)을 확인했다고 했는데 만료일도 봤느냐는 질문이었다. 보지 않았다고 답했다. 3주 내내 확인한 것과 추측을 구분하는 규칙을 만들었지만, 정작 발표에서는 어디까지 봤는지 분명히 말하지 못했다.

만든 기능을 다 설명하려 했다

8월 25일 중간 발표를 하루 앞두고도 자료에는 만든 기능이 거의 다 들어 있었다. 빠뜨리고 싶지 않았다. 10분 안에 설명하려니 하네스 개발과 랩 실습이 서로 다른 두 프로젝트처럼 들렸다.

기능을 차례로 소개하던 순서를 바꿨다. 에이전트가 행동을 제안하고 사람이 승인한 뒤, 어떤 결과가 나왔는지 실제 랩의 장면을 따라 설명했다. 기능 설명은 그 장면을 이해하는 데 필요한 만큼 남겼다.

중간 발표에서는 팀 역할과 주요 세션을 그림으로 보여 달라는 피드백을 받았다. 사람이 검토하고 승인한 장면도 부족했다. 개인 회고는 각자 말로 쓰고, 작은 글자와 제각각인 색도 고치기로 했다.

겹치는 설명을 덜어 요약본을 만들었다가, 최종본에는 단계별 증거 화면을 다시 넣었다. 장수는 다시 늘었다. 그래도 처음 보는 사람이 우리가 어떤 순서로 문제를 풀었는지는 따라갈 수 있게 하고 싶었다.

마지막 주에는 발표 화면을 골랐다

새 기능을 붙이지 않고 발표에 쓸 화면을 골랐다. 작업 지시와 실행 기록, 다음 사람에게 넘긴 문서가 순서대로 보이게 했다. 화면 크기와 테마를 맞추고 불필요한 탭과 로컬 경로를 잘라냈다. 계정명이나 알림이 남지 않았는지도 확대해서 봤다.

제출 파일의 누락과 해시값, 민감정보를 검사했다. 별도 코드에서 문법 오류도 나왔는데, 이를 고친 뒤 하네스 전체 기능을 다시 시험했는지는 기록으로 확인하지 못했다.

하네스에 둔 규칙과 랩에서 드러난 한계

서비스 장애도 발표에 넣었다. 팀 전체 요청량을 관리하지 못한 점을 설명했고, 전체 인프라 로그가 없어 직접 원인은 특정하지 못했다고 적었다.

대화를 많이 넘겨도 같은 판단을 하지는 않았다

처음에는 같은 지침과 도구를 쓰면 비슷한 결과가 나올 줄 알았다. 실제로는 작업자마다 이전 대화가 달랐고, 에이전트가 제안하는 경로도 달랐다.

오래 이어 간 세션은 이미 기각한 경로를 다시 꺼냈다. 새 세션은 같은 실패를 처음부터 반복했다. 인계 문서에 대화를 모두 넣으면 중요한 제한을 찾기 어려웠고, 결론만 넘기면 판단 근거가 사라졌다. 어느 정도를 넘겨야 할지는 끝까지 정하지 못했다.

다시 한다면 공격부터 이해하겠다

하네스 구조를 다듬는 데 시간을 많이 썼다. 정작 공격 단계를 잘못 이해한 채 기록만 자세히 남기면 틀린 방향으로 오래 갈 수 있었다.

다시 한다면 대상 취약점과 공격 원리부터 공부하겠다. 무엇이 성공과 실패를 가르는지, 왜 다음 단계로 넘어가는지 내가 설명할 수 있어야 AI의 제안도 판단할 수 있을 것 같다. 인계할 때는 확인한 사실과 버린 가설을 추리고, 팀 전체의 요청과 재시도도 함께 관리하고 싶다.

수상은 못 했다. 납득은 갔고, 들인 시간만큼 아쉬움도 남았다. 그래도 하네스를 설계하고 팀원들의 공격 진행을 조율하면서, 중간과 최종 발표까지 직접 맡아 끝냈다는 후련함이 더 컸다.

발표 편집에도 아쉬움이 남았다. 중간 발표에서 받은 피드백에 맞춰 문제 풀이 순서를 보여 주는 데 집중했다. 그 과정에서 우리 팀이 다른 팀과 무엇이 달랐는지는 끝내 설명하지 못했다.

함께 보면 좋은 글

이 기록과 태그가 겹치는 아티클입니다.