AI가 남긴 100개, 사람의 몫
AI가 포렌식 분석의 속도를 끌어올린 것은 부정할 수 없는 사실입니다. 불과 얼마 전까지만 해도 셀 수 없을만큼의 로그와 이티팩트를 하나하나 눈으로 훑어야 했던 작업이 이제는 AI의 도움으로 상당 부분 줄어들었습니다. 아티팩트 파싱, 타임라인 정리, 의심스러운 항목의 선별까지 AI가 말아주는 영역이 분명히 넓어졌습니다.
하지만 최근 실무를 하면서 한 가지 점점 더 강하게 느끼는 것이 있습니다. AI의 분석 결과에 너무 매몰되어서는 안 된다는 것입니다. AI는 분명 빠르고 편리합니다. 그런데 그 빠르고 편리한 결과가 곧 정확한 결과라는 뜻은 아닙니다.
AI가 아직 넘지 못한 경계
AI는 방대한 로그에서 패턴을 추출하고 알려진 공격 기법과 유사한 흔적을 찾아내며 분석가가 놓칠 수 있는 항목을 짚어주는 등 이미 많은 것을 잘 합니다.
하지만 아직까지 AI가 잘 하지 못하는 영역이 있다고 느낍니다. 바로 정상과 비정상의 극간을 구분하는 일입니다.
침해사고 분석에서는 명확하게 악성인 흔적보다 정상처럼 보이지만 맥락 안에서 비정상인 흔적이 더 중요한 경우가 많습니다. 특정 시간대에 실행된 정상 프로세스가 왜 이상한지, 평소와 똑같아 보이는 로그인 기록이 왜 의심스러운지 이런 판단은 사고의 전체 맥락을 이해하고 있어야만 가능합니다.
AI는 이 극간을 아직 잘 구분하지 못하는 것 같습니다. 알려진 패턴에 대해서는 잘 잡아내지만 맥락 안에서만 의미가 달라지는 미묘한 차이를 판단하는 데에는 한계가 있습니다.
그래서 저는 AI가 제공해주는 것은 언제까지나 "의심해볼 만한 요소"라고 생각합니다. 최종적으로 그것이 실제 공격의 흔적인지 정상적인 운영 과정에서 발생한 것인지를 판단하는 것은 결국 사람의 몫입니다.
이미지 하나 넣으면 보고서가 나오는 시대
요즘은 AI의 에이전트형 서비스가 많이 등장하고 있습니다. 포렌식 이미지 파일이 들어있는 폴더를 통째로 Input으로 넘기고 커피잔을 들고 Allow 버튼을 누르기만 하다보면 아티팩트 파싱부터 타임라인 구성, 의심 항목 분석, 심지어는 약식 보고서까지 만들어줍니다.
굉장히 편리합니다. 그리고 실제로 그 보고서 안에 담긴 내용 대부분은 맞는 경우가 많습니다.
하지만 그 보고서 하나만으로 분석을 완료했다고 말할 수 있을까요. 실제 도구를 열어 직접 검증해보지도 않고 AI가 만들어준 보고서만 보고 끝냈다면 그것을 분석이라고 부르기는 어렵지 않을까 생각합니다.
대부분이 맞다는 것이 문제를 더 어렵게 만들기도 합니다. 열에 아홉이 맞으니까 나머지 하나도 맞을 것이라고 생각하기 쉽습니다. 하지만 실무에서는 그 몇 개의 오분석 때문에 전체 분석 방향이 꼬이는 경험이 한두 번이 아니었습니다.
그 몇 개의 오류를 잡아내지 못하면 결국 잘못된 결론에 도달하게 됩니다. 그리고 그 결론을 바탕으로 고객사에 보고하고 대응 방향을 잡고 때로는 법적 판단의 근거로 사용될 수도 있습니다. 그렇기에 AI가 만든 결과를 그대로 신뢰하는 것은 위험합니다.
10,000개를 100개로 줄여주는 것
그렇다고 해서 AI가 쓸모없다는 이야기를 하려는 것은 아닙니다.
기존에 분석가가 직접 10,000개의 항목을 하나하나 확인해야 했다면 AI는 그것을 100개로 줄여줍니다. 의심스러운 항목을 추려주고 우선순위를 매겨주며 분석가가 집중해야 할 부분을 좁혀줍니다. 이것만으로도 AI의 활용 가치는 충분하다고 생각합니다.
다만 그 100개가 모두 맞다고 생각해서는 안 됩니다. 100개 중에서 몇 개가 정확하고 몇 개가 틀린지 우리는 알 수 없습니다. 그래서 결국 100개 모두 팩트체크를 해야 합니다. AI가 줄여준 것은 확인해야 할 범위이지 확인이라는 과정 자체를 없애준 것은 아닙니다.
이 지점을 놓치면 AI 활용은 오히려 독이 됩니다. AI가 잘해줬으니 내가 안 봐도 된다는 생각이 들기 시작하면 분석의 정확도는 AI의 정확도에 완전히 종속됩니다.
결국 하고 싶은 이야기는 이것입니다. AI가 모두 옳은 것이 아니며 AI가 내놓은 결과가 실제로 맞는지 검증하기 위한 베이스 지식을 꾸준히 쌓아야 한다는 것입니다.
AI가 특정 아티팩트를 근거로 공격 흔적이라고 판단했을 때 그 아티팩트의 구조와 의미를 이해하고 있어야 그것이 맞는 판단인지 확인할 수 있습니다. 또한 AI가 타임라인을 구성했을 때 각 이벤트의 맥락을 알고 있어야 빠진 부분이나 잘못된 연결을 발견할 수 있습니다.
"AI가 맞다고 하니까 맞겠지"라는 태도는 분석가의 역할을 스스로 내려놓는 것과 다르지 않습니다.
그리고 이것은 비단 포렌식에만 해당하는 이야기가 아닐 것입니다. 어떤 분야든 AI를 활용하려면 그 분야의 기본 지식이 먼저 있어야 합니다. AI가 내놓은 답이 맞는지 틀린지 판단할 수 있는 눈이 있어야 비로소 AI를 도구로 쓸 수 있습니다.
Love Att&ck
최근 침해사고 분석을 하면서 하나 더 강하게 느끼는 것이 있습니다. 분석 과정에서 "이것이 맞다"라고 판단하기 위해 그리고 어떤 부분을 더 봐야 할지 결정하기 위해 실제 레드팀이 사용하는 도구와 그 원리를 이해하는 것이 굉장히 중요하다는 것입니다.
공격자는 기본적으로 로그를 지우고 도구를 메모리에서만 실행하고 정상 프로세스를 가장하며 타임스탬프를 조작하는 등 어떤 형태로든 흔적을 남기지 않기 위해 최선을 다합니다. 이런 기법들을 이해하고 있어야 그 와중에도 남을 수밖에 없는 부분이 어디인지 고민할 수 있습니다.
특정 기법이 사용되었다면 어떤 로그가 생성되고 어떤 로그가 생성되지 않는지 판단할 수 있습니다. 이 이해가 없으면 분석가는 눈앞에 있는 데이터만 보게 됩니다. 있는 것만 보는 것이 아니라 없는 것이 왜 없는지까지 생각할 수 있어야 분석의 깊이가 달라집니다.
없는 그림 찾기
CTF는 이미 답이 있다는 확실한 전제를 깔고 가지만 사실 침해사고 분석을 할 때 볼 수 있는 데이터는 제한적입니다. 대부분의 로그는 어느 정도 유실되어 있거나 공격자에 의해 의도적으로 삭제된 상태에서 분석이 시작됩니다. 볼 수 있는 부분이 많지 않은 경우가 오히려 일반적입니다.
AI는 주어진 데이터 안에서 결론을 내립니다. 하지만 그 주어진 데이터 자체가 불완전하다면 AI의 결론도 불완전할 수밖에 없습니다. 유실된 로그 때문에 공격의 초기 진입 경로가 빠져 있을 수도 있고 삭제된 흔적 때문에 공격자의 행위 일부가 아예 보이지 않을 수도 있습니다.
AI 시대에도 변하지 않는 것
이런 경험들을 하면서 느끼는 것이 있습니다. AI에 맹신하여 오판단하는 일이 없으려면 분석 결과의 정합성을 판단하기 위한 기본 지식을 꾸준히 키워나가야 한다는 것입니다. 그리고 단순한 웹해킹이나 악성코드 분석에 그치지 않고 하나의 공격 기법에 사용되는 다양한 공격 도구와 그 원리에 대한 관심도 넓혀야 한다는 것을 깨닫고 있습니다.
공격자가 어떤 도구를 쓰고 어떤 방식으로 흔적을 지우며 어떤 경로로 움직이는지 이해하는 것은 포렌식 분석가에게 선택이 아니라 필수라고 생각합니다. 그래야 AI가 내놓은 결과를 볼 때에도, "이 부분은 맞을 가능성이 높다", "이 부분은 추가 확인이 필요하다", "이 부분은 AI가 판단하기 어려운 영역이다"라는 구분을 할 수 있습니다.
AI는 분석가를 빠르게 만들어줍니다. 하지만 분석가를 정확하게 만들어주지는 않습니다. 정확함은 여전히 사람의 지식과 경험 그리고 판단력에서 나옵니다.
10,000개를 100개로 줄여준 AI에게 감사하되 그 100개를 검증하는 일까지 AI에게 맡기지는 않았으면 합니다. 결국 분석의 마지막 한 줄은 사람이 써야 합니다.