
본격적으로 프로젝트 기간이 시작됐다. 프로젝트 시작 약 2주 전부터 부랴부랴 움직인 덕분에 더 많은 일들을 할 수 있었다. 팀원들 역시 같이 힘내줘서 인프라, 공격, 분석 세 파트 모두에서 설정한 목표를 이루고 출발할 수 있었다.
12월 셋째주 기준 12/22 멘토님들의 방문 멘토링 일정이 있기 때문에 우리가 무엇을 하고 있고 뭘 이루고자 하는지 명확하게 보여줘야 한다는 생각에 열심히 했던거 같다.
또한, 착수보고 과정에서 좋은 평가를 받았기에 기대를 저버리고 싶지 않은 마음도 컸던거 같다. 뭐 사실 우리 프로젝트가 갖는 가치를 잘 알고 있었던 것도 한 몫한거 같다
암튼! 이번주 TIL도 프로젝트 수행했던 내용들과 했던 생각들 위주로 정리 해보겠다.
자세한 내용이 궁금하다면?
프로젝트 1주차 수행 일지
TIL에는 내가 느꼈던 감정과 생각 위주로 정리 할거라 내용적인 부분은 해당 링크의 글을 참고 해주세요~

12월 둘째주에 겪었던 크나큰 혼란 덕분에 난 방향성이 명확 해졌다고 생각했다.
하지만 프로젝트 준비하면서 팀원들하고 대화를 나누거나, 팀원들이 강사님께 하는 질문들을 주의 깊게 들어보면 어? 하는 포인트들이 많았다.
"탐지 고도화"라는 큰 방향성은 모두가 동일했다. 근데? 누구는 대응까지 생각하고 있고, 누구는 탐지만 생각하고 조금씩 세부적인 방향성이 다르다는 문제를 인식했다.
큰 방향은 맞아도 세부 디테일적으로 생각하는게 다르면 시간이 흐르고 나면 프로젝트가 망가질 수 있기 때문에 꽤나 큰 문제라고 생각했다.
사공이 많으면 배가 산으로 간다고 이 속담이 적절한지는 모르겠으나.. 초장에 바로 잡아야 한다고 생각했었다.

팀원들과 점심을 먹으러 가서 세 명씩 찢어져서 앉게 됐고 난 민송이랑 희수와 같이 식사를 하게 됐다. 민송이가 다른 팀들이 우리 팀 엄청 열심히 하는거 같다고 칭찬한다고 기분 좋았다 우리 잘하고 있는거 같다는 얘기를 해줬다.
사실 아 진짜~? 할 수도 있었겠지만 거기다가 나는ㅋㅋㅋㅋㅋㅋ 열심히 하는건 당연한거 아닌가? 잘해야지라고 했고 희수는 근데 우리 각자 생각하고 있는게 다 다른거 같아라고 했다. 민송이는 극대노를 했지만 난 희수 얘기 듣고 나랑 같은 생각을 하고 있구나.. 하고 되게 고마웠다. 나와 같은 시선으로 팀을 바라보고 생각을 해주는 팀원이 있다는건 정말 큰 힘이 되는거 같다. (근데 이 날 밥 먹을 때 민송이한테 잔소리를 엄청 들어서 밥 먹다가 체할뻔했다.)
그래서 당일엔 할게 있었고, 나도 생각 정리를 하고 팀원들한테 이야기 해야할거 같아서 다음날에 우리 프로젝트 방향성을 주제로 회의를 하자고 했다.
한명씩 이제 이야기를 들어보는데 역시.. 생각이 달랐다. 그래도 큰 목표는 동일 했기에 어렵지 않게 영점을 맞출 수 있었다.
우리 프로젝트가 나아 가고자 하는 방향은 다음과 같다.
다양한 공격 수행을 통해 발생한 시스템, 네트워크 로그를 상관 관계와 행위 기반으로 분석하여 탐지 Rule을 적립하고 추가적인 공격 수행을 통해 하는 것.
탐지 고도화를 우선적으로 하고 대응은 우리가 신뢰성 있는 탐지 결과를 만들어 냈을 때 추가하는 것으로 결론이 났다.
프로젝트 수행 준비 단계에서 내가 메인으로 맡은 파트가 공격 파트라서 사실 고민이 많았다.
애초에 보안 프로젝트를 진행하는 것도 처음이고 Offensive 영역은 더더욱.. 지식이 없어서 공격 시나리오 설계부터 쉽지가 않았다.
프로젝트 가이드 라인에 "다양한 공격 시나리오를 통해"라는 문구가 있었는데, 공격 방식(Method) 측면에서 다양함인지 말 그대로 시나리오(Story Line)의 다양함인지 도무지 감이 안잡혀서 고민 끝에 멘토님께 질문을 드렸다.

음! 역시 둘 다 의도하신거였다..ㅎㅎ 답변을 받고 생각이 많아졌다.. 환경 구성을 공격 시나리오마다 다르게 가져 가야하나부터 시작해서 지금 보이는게 Lateral Movement(횡적 이동), Privilege Escalation (권한 상승), Container Escape (컨테이너 탈출) 이 셋이 다인데 .. 아득했다.
고민하면서 이것저것 찾아보던 와중에 갑자기 MCP(Model Context Protocol)가 떠올랐다. 요즘 대부분 아니 모두가 모르거나 궁금한게 있다면 AI부터 찾아간다. 근데 이걸 내가 원하는 방향으로 동작을 정의해서 사용할 수 있게 AI를 활용하는 방법중에 하나가 MCP이다.
우리 프로젝트는 기본적으로 분석, 포렌식에 집중 해야하기 때문에 최대한 다른 부분에서 리소스를 최소화 해야한다. 그럼 공격 시나리오 만드는 거부터 시작해서 공격 수행까지의 과정을 자동화 한다면?! 머리에서 종이 울린 순간이었던거 같다. 바로 설계에 들어갔다.

우선 공격 관련한 데이터가 필요했다. 최대한 다양한 공격 방식을 수집 했기 때문에 공격자들이 실제 사용하는 공격 기술을 분류하고 정리한 공개된 지식 기반 프레임워크인 MITRE ATT&CK가 떠올랐고 여기서 데이터를 구할 수 있을거라고 생각했다.
github에 가보면 MITRE ATT&CK의 STIX라고 있다. STIX (Structured Threat Information eXpression)는 사이버 위협 정보를 구조화 하여 JSON 형식으로 데이터를 제공한다. 우리 프로젝트가 기본적으로 Container 환경에서의 위협을 다루기 때문에 가장 최신 릴리즈 버전인 18.1버전 enterprise-attack 데이터를 받았다.

까보면 대충 위와 같이 데이터가 있는데 필요없는 정보들도 많고해서 필요없는 필드를 거르고 데이터를 새로 라벨링하는 작업이 필요했다. 그리고 컨테이너 환경에서 발생하는 공격들만 필요하기 때문에 걸러냈다.

MITRE ATT&CK에서 부여한 TID, 공격이름, 공격 유형, 공격 대상, 공격에 대한 설명을 key값으로 뽑아냈다. 그리고 이 공격을 수행하기 위한 command data를 생성했다.
시나리오에서 각 단계별로 어떤 공격을 수행하고 어떤 command로 공격을 수행하는지까지 나오면 편할거 같아서 만들었다.

이런 식으로 어떤 유형의 공격이고 TID, 설명, command를 key값으로 데이터를 생성했다.
일단 결론부터 얘기하면 공격 수행까지 자동화 시키고 싶었지만 내가 공격 대상의 shell을 따면 그 shell을 mcp가 인식하지 못하는 문제가 있어서 공격 수행까지는 무리가 있었다.
그래서 환경에 대한 정보를 mcp에 input으로 주면 그 환경이 가지고 있는 취약점을 추출해서, 시나리오를 생성하는 식으로 기능을 변경했다.

위 사진은 mcp가 생성한 공격 시나리오의 일부이다. 내가 원하는 대로 잘 뱉어냈다!!!
강사님한테 말씀드리니까 나중에 기획을 한번 해보라고ㅋㅋㅋㅋㅋ 아이디어가 좋았나보다 ㅎ
주의
프로젝트 수행을 위해 제작한 것이지 절대로 실제 운영되고 있는 환경에 이를 시도하거나 이와 비슷한 시도를 절대로 해선 안됩니다.
팀원들한테도 보여주니 아주 좋은 반응이 돌아왔다ㅎㅎ 뿌듯하다! 이런 tool을 만드는 프로젝트였다면 이를 좀 고도화 하면 좋겠지만 우리 프로젝트의 목표는 그게 아니니 이쯤에서 멈췄다. 우리 프로젝트에서 공격의 "성공 여부"보다 "위협 행위"가 더 중요하기 때문이다.
보통 회사의 "보안팀"이라고 하면 위협행위 탐지와 대응과 같은 업무를 주로하는 Blue Team과 모의 해킹, 취약점 발견 등의 업무를 주로하는 Red Team으로 나뉜다.
우리 프로젝트는 위협 행위를 탐지하고 분석하는데 초점이 맞춰져 있기 때문에 Blue Team의 성격을 띄고 있다.
우리가 프로젝트를 준비하면서 "Blue"의 정체성을 잊고 있었던거 같다. 우리가 프로젝트 수행할 때 가장 컸던 고민이 환경 구성이었다. 공격은 어느 수준까지 해야하고 환경은 얼마나 취약하게 만들어야 하는지..와 같은 부분에서 고민이 많았다.

결국 또 멘토님께 질문을 드렸다ㅋㅋㅋㅋㅋ.. 멘토님과 꽤 오랜 시간동안 이야기를 나눴고 위와 같이 "블루는 분석과 포렌식에 집중해라"라는 피드백을 받을 수 있었다.
환경 구성을 어떻게 할지를 고민하는거보다 위협 행위에서 발생하는 공격자의 흔적, 아티팩트에 더 집중을 해야됐는데, 우리가 우선순위를 잘못 잡았던거 같다.
또 바로 다음날 회의를 통해 곧바로 프로젝트 수행에 있어서 멘토님 말씀처럼 분석과 포렌식에 집중할 수 있도록 우선순위를 재설정했다. 늦은 시간까지 조언 해주셔서 너무 감사했다.
멘토님 덕분에 정말 프로젝트를 잘 준비하고 진행할 수 있는거 같다.
외에도 다음주(셋째주 기준)에 멘토님들 방문 일정이 잡혀 있어서 우리가 지금까지 계획하고 첫 주에 수행한 내용을 정리하고 발표 자료를 만들면서 하루하루 바쁘게 지냈던거 같다.
물론 뭔가 잘 안풀리는 날도 고민이 많았던 날도 있었지만 이게 쌓이고 쌓여서 작더라도 성과가 하나씩 보인다는게 프로젝트를 하는 맛이라고 생각한다. 사실 이 맛에 하는거지ㅋㅋㅋㅋㅋ
그리고 앞서 계속 얘기 했듯이 난 프로젝트를 그냥 허투루 끝낼 생각은 단 한번도 해본적이 없기에 더 부지런히 생각하고 움직여야겠다는 생각을 한다.
이번주 TIL은 여기서 마치도록 하고 다음주 TIL은 멘토링 한 내용들을 가지고 와보도록 하겠다! 다들 이번 한 주도 고생하셨습니다!