아래의 모든 내용은 가상의 기록을 사용하며, 실제 사례를 서술하려는 것이 아니라 형태를 보여 주기 위해 구성한 것이다. 사슬처럼 읽힌다: 02:14의 게이트웨이 인증, 02:19의 데스크톱 세션, 02:41의 권한 있는 계정 변경, 그리고 03:02에 발견된 암호화된 파일. 첫 줄은 답처럼 보이고 보고서는 흔히 그런 것처럼 쓰인다. 로그인은 게이트웨이가 기록한 사건이지 누군가 어떻게 들어왔는지에 대한 결론이 아니며, 그 차이가 다음에 무엇을 할지 결정한다.

증상: 답처럼 보이는 로그인

인증 기록은 얻기 가장 쉬운 증거이자 가장 쉽게 과대 해석되는 증거다. 서비스가 어느 시각에, 어느 주소에서, 어느 계정을 위해 자격 증명을 받아들였다는 것을 보여 준다. 누가 그 자격 증명을 통제했는지, 게이트웨이가 악용되었는지, 계정 소유자의 기기가 이미 침해되었는지는 보여 주지 않는다.

세 가지 설명이 같은 로그인 줄에 들어맞는다. 누군가 훔친 비밀번호를 사용했고 게이트웨이는 만들어진 그대로 동작했다. 이전에 침해된 노트북이 평소처럼 로그인했다. 무관한 노출 서비스가 실제 진입점을 제공했고, VPN 세션은 같은 행위자의 이후 별개 행동이다.

각 설명은 환경의 다른 곳에서 서로 다른 증거를 예측하므로, 조사는 처음 맞는 설명의 확인이 아니라 그 예측들을 찾아야 한다. 훔친 비밀번호는 이례적인 인증 지역이나 시각을 예측한다. 침해된 노트북은 로그인 이전의 호스트 흔적을 예측한다. 무관한 진입점은 게이트웨이와 전혀 관계없는 활동을 예측한다.

이야기하기 전에 사건을 분리하라

어떤 이야기도 존재하기 전에 사건을 따로 적어라 — 이야기는 시간선을 용의자 주위로 배열하도록 이끌기 때문이다. 각 줄은 그 기록이 무엇을 입증하는지, 그리고 별도로 혼자서는 무엇을 입증할 수 없는지를 말해야 한다. 두 줄이 한 문장으로 합쳐지는 순간 해석이 이미 이긴 것이다.

마지막 사건은 공격자가 아니라 탐지에 관한 것임을 주목하라. 발견 시각과 침해 시각은 보통 몇 시간 또는 몇 주 떨어져 있고, 둘을 같다고 보는 보고서는 당신 이후에 오는 모든 독자를 오도할 것이다.

각 타임스탬프가 어디서 왔는지를 기록하라, 무엇을 말하는지만이 아니라. 수집기의 수신 시각, 사건 시각, 탐지 시각은 세 개의 다른 숫자이며, 이것들을 조용히 한 열로 정규화하는 것이 증거가 결코 갖지 못한 형태를 시간선에 부여하는 방법이다.

식별자가 일치하는 곳에서만 기록을 결합하라

기록을 합치는 것은 가설이지 서식 작업이 아니다. 계정 이름, 할당된 VPN 주소, 대상 호스트, 세션 식별자가 일치해야 두 줄이 하나의 이야기가 된다. 공유된 공용 주소로는 충분하지 않다 — 설계상 공유되기 때문이다.

Record sourceJoin key that must matchWhat breaks when the key is missing
File-share or backup recordfile path and modification timeimpact cannot be ordered against any session
Host process record, EDR or audit loghost name and process start timethe process cannot be placed inside a session
Session broker or remote-desktop logsession identifier and target hostthe session cannot be traced back to a gateway login
Gateway authentication logaccount name and assigned VPN addressthe session cannot be followed past the gateway

진입점을 추적할 때는 표를 아래에서 위로, 영향을 범위 정할 때는 위에서 아래로 읽어라 — 두 질문은 반대 방향을 필요로 한다. 식별자가 실제로 일치하는 곳에서는 그렇게 말하고 두 기록을 모두 인용하라. 일치하지 않는 곳에서는 가정으로 틈을 닫지 말고 보이게 두라.

여기서 익숙한 사용자 이름도 오도한다. 같은 계정을 아침에는 정당한 소유자가, 밤에는 다른 누군가가 사용할 수 있고, 계정 이름만으로는 둘을 구별할 수 없다. 계정을 귀속시키고, 그다음 사람을 별도로 귀속시키되, 그것을 뒷받침하는 무언가가 있을 때만 하라. 검토에서 무너지는 대부분의 시간선은 바로 이 단계를 너무 서둘렀다.

빠진 로그는 틈이지 부정적 증거가 아니다

실패한 비밀번호 사건이 없다고 해서 성공한 로그인이 정당했다는 것이 증명되지는 않는다. 유효한 도난 자격 증명은 성공한 인증 기록을 만들고 실패는 전혀 만들지 않으며, 바로 그것이 자격 증명 탈취를 매력적으로 만든다.

마찬가지로 오늘 닫힌 포트는 오늘에 대해 무언가를 말한다. 그 서비스가 그때 노출되었는지, 그때 취약했는지, 공격을 실어 날랐는지에 대해서는 아무것도 말하지 않는다. 과거 구성과 서비스 증거만이 그 틈을 닫을 수 있다.

보고서에 틈을 명시하라. «그 구간에 대한 기록이 없다»는 방어 가능한 문장이고, «다른 일은 없었다»는 그렇지 않으며, 그것은 당신에게 그대로 인용되어 돌아올 것이다. 틈에는 소유자도 있다 — 기록을 만들어야 했던 시스템과 만들지 않은 이유를 지목하라. 그 한 줄이 누락을 개선 항목으로 바꾼다.

증거가 뒷받침하는 수준에서 발견을 쓰라

보존, 격리, 복구를 사건 책임자를 통해 조정하고 그를 우회하지 마라. CISA의 기술 지침은 개선이 남아 있는 것을 바꾸기 전에 관련 산출물과 로그를 수집할 것을 강조하며, 그 순서는 어떤 단일 도구보다 중요하다.

틈을 닫으려고 운영 장비에 대해 의심되는 익스플로잇을 다시 실행하는 것은 추가되는 위험에 값하지 않다. 공격이 통할 수 있었음을 보여 주는 시험은 통했다는 증거가 아니며, 두 진술의 차이가 이 훈련의 규율 전부다.

네 개의 목록으로 끝내라 — 관찰된 것, 기록이 뒷받침하는 관계, 가설로 남는 것, 이용할 수 없는 기록. 기록이 뒷받침한다면 «사건 중에 VPN 계정이 사용되었다»는 두 번째 목록에 들어간다. «VPN이 랜섬웨어를 일으켰다»는 무언가 인과를 확립할 때까지 어디에도 들어가지 않는다.

관련 글