사회과학에서 과정은 사건의 지시된 순서를 가리키는 용어로 간주됨.
운영 및 조직적 맥락에서 프로세스는 보다 정확하게는 작업, 비즈니스, 생산 또는 가치 창출 프로세스라고 함.
프로세스는 일반적으로 시스템 소프트웨어의 일부인 컴퓨터 시스템에서 실행되는 프로그램의 또 다른 이름임.
결정론적 과정과 확률적인 과정을 구별하는 것도 필수적임.
결정론적 과정은 각 상태가 다른 이전 상태 및 사건에 인과적으로 종속되고 이에 따라 결정되는 과정임.
확률적인 과정은 한 상태가 특정 확률로만 다른 상태를 따르는 과정임.
여기서는 통계적 조건만을 가정할 수 있음.
우리에게는 위의 정의 중 몇 가지가 겹침.
우리는 결정론적 프로세스와 연결된 이벤트 과정을 나타내기 위해 사회 과학의 침투 프로세스 정의를 사용함.
우리의 모든 단계는 우리가 발견하거나 유발할 수 있는 사건과 결과를 기반으로 하기 때문임.
침투 테스트 프로세스는 사전 정의된 목표에 대한 경로를 찾기 위해 침투 테스터가 수행하는 연속적인 단계와 이벤트로 정의됨.
프로세스는 원하는 결과를 얻기 위해 특정 시간 프레임 내에서 특정 작업 순서를 설명함.
프로세스는 고정된 레시피를 나타내지 않으며 단계별 가이드가 아니라는 점에도 유의해야 함.
따라서 우리의 침투 테스트 프로세스는 거칠고 유연해야 함.
결국 모든 고객은 고유한 인프라, 욕구 및 기대치를 가지고 있음.
침투 테스트 단계
이를 표현하고 정의하는 가장 효과적인 방법은 상호 의존적인 단계를 이용하는 것임.
우리는 연구에서 이러한 프로세스가 순환 프로세스의 형태로 제시된다는 사실을 종종 발견함.
이를 좀 더 자세히 살펴보고 순환 프로세스의 단 하나의 구성 요소도 적용되지 않는다고 상상하면 전체 프로세스가 중단됨.
엄격하게 정의하면 전체 프로세스가 실패함.
이 프로세스를 처음부터 시작하지만 이미 새로 획득한 정보를 사용한다고 가정하면 이는 이미 이전 프로세스를 취소하지 않는 새로운 프로세스 접근 방식임.
문제는 이러한 표현과 접근 방식을 사용하면 침투 테스트 프로세스를 확장하기 위해 의지할 것이 없는 경우가 많다는 것임.
우리가 논의한 바와 같이, 우리가 따를 수 있는 단계별 지침은 없지만 개별 단계와 접근 방식을 유연하게 변경하고 우리가 받는 결과와 정보에 맞게 조정할 수 있는 단계가 있음.
침투 테스트의 여러 단계에서 시도하는 다양한 작업에 대한 자체 플레이북을 개발할 수 있지만 모든 환경이 다르기 때문에 지속적으로 적응해야 함.
이후 각 단계의 세부 사항을 다루고 구조를 사용하여 다양한 전술, 기술 및 절차(TTP)를 학습하는 방법에 대한 학습 및 연습이 필요함.
단계에 따른 침투 테스트 프로세스는 다음과 같음.
사전 참여 (Pre-Engagement)
사전 참여는 고객을 교육하고 계약을 조정하는 것임.
필요한 모든 테스트와 해당 구성 요소는 엄격하게 정의되고 계약에 따라 기록됨.
대면 회의나 전화 회의에서는 다음과 같은 다양한 준비가 이루어짐.
- 비공개 계약
- 목표
- 범위
- 시간 예측 (Time Estimation)
- 공격 규칙
정보 수집 (Information Gathering)
정보 수집은 다양한 방법으로 필요한 구성 요소에 대한 정보를 얻는 방법을 설명함.
우리는 대상 회사와 사용 중인 소프트웨어 및 하드웨어에 대한 정보를 검색하여 발판으로 활용할 수 있는 잠재적인 보안 틈새(gap)를 찾음.
취약점 평가 (Vulnerability Assessment)
취약점 평가 단계에 도달하면 정보 수집 단계의 결과를 분석하여 시스템, 애플리케이션 및 각 버전의 알려진 취약점을 찾아 가능한 공격 벡터(vector)를 찾음.
취약점 평가는 수동 및 자동화된 수단을 통해 잠재적인 취약점을 평가하는 것임.
이는 사이버 공격에 대한 회사 네트워크 인프라의 위협 수준과 취약점을 결정하는 데 사용됨.
악용 (Exploitation)
악용 단계에서는 결과를 사용하여 잠재적 벡터에 대한 공격을 테스트하고 대상 시스템에 대해 공격을 실행하여 해당 시스템에 대한 초기 접근을 얻음.
사후 악용 (Post-Exploitation)
침투 테스트의 이 단계에서 우리는 이미 악용된 시스템에 접근할 수 있으며 수정 및 변경이 이루어지더라도 여전히 접근할 수 있음을 보장함.
이 단계에서 우리는 가능한 가장 높은 권리를 획득하고 자격 증명이나 클라이언트가 보호(약탈)하는 데 관심이 있는 기타 데이터와 같은 민감한 데이터를 찾기 위해 권한을 상승하려고 시도할 수 있음.
때때로 우리는 고객에게 접근의 영향을 보여주기 위해 사후 악용을 수행함.
다른 경우에는 다음에 설명된 측면 이동 프로세스에 대한 입력으로 사후 악용을 수행함.
측면 이동 (Lateral Movement)
측면 이동은 동일하거나 더 높은 권한 수준에서 추가 호스트에 접근하기 위해 대상 회사의 내부 네트워크 내에서 이동하는 것을 의미함.
이는 목표에 도달할 때까지 활용 후 활동과 결합된 반복적인 프로세스의 경우가 많음.
예를 들어, 웹 서버에 대한 기반을 확보하고, 권한을 상승하고, 레지스트리에서 비밀번호를 찾음.
추가 열거를 수행하고 이 비밀번호가 로컬 관리자로 데이터베이스 서버에 접근하는 데 작동하는지 확인함.
여기에서 데이터베이스의 민감한 데이터를 약탈하고 다른 자격 증명을 찾아 네트워크에 더 깊이 접근할 수 있음.
이 단계에서는 일반적으로 악용된 호스트나 서버에서 발견된 정보를 기반으로 많은 기술을 사용함.
개념 증명 (Proot-of-Concept)
이 단계에서는 네트워크 손상 또는 일정 수준의 접근을 달성하기 위해 취한 단계를 단계별로 문서화함.
우리의 목표는 우리의 목표를 달성하기 위해 어떻게 여러 약점(weakness)을 함께 연결할 수 있었는지 그림을 그리는 것임.
이를 통해 고객은 각 취약점이 어떻게 적용되는지 명확하게 확인하고 해결 노력의 우선순위를 정하는 데 도움을 줄 수 있음.
우리가 수행한 단계를 잘 문서화하지 않으면 클라이언트가 우리가 할 수 있었던 일을 이해하기 어렵고, 따라서 교정 노력이 더욱 어려워짐.
가능하다면 하나 이상의 스크립트를 만들어 고객이 결과를 재현하는 데 도움을 주기 위해 취한 단계를 자동화할 수 있음.
사후 참여 (Post-Engagement)
계약 후 관리자와 고객 회사 경영진 모두가 발견된 취약점의 심각도를 이해할 수 있도록 자세한 문서가 준비됨.
이 단계에서는 모든 호스트와 서버에 대한 모든 작업 흔적도 정리됨.
이 단계에서 우리는 고객을 위한 결과물을 만들고, 보고서 연습 회의를 개최하고, 때로는 대상 회사의 임원이나 이사회에 임원 프레젠테이션을 전달함.
마지막으로 계약 의무 및 회사 정책에 따라 테스트 데이터를 보관함.
일반적으로 당사는 일정 기관 동안 또는 클라이언트의 수정 사항을 테스트하기 위해 수정 후 평가(재테스트, retest)를 수행할 때까지 이 데이터를 보관함.
중요성
우리는 이 절차를 내부화하고 이를 모든 기술 활동의 기초로 사용해야 함.
각 단계의 구성 요소를 통해 우리는 개선해야 할 영역이 무엇인지, 지식의 대부분의 어려움과 격차를 어디에 있는지 정확하게 이해할 수 있음.
예를 들어, 우리가 공부해야 할 대상으로 웹사이트를 생각할 수 있음.
단계 |
설명 |
1. 사전 참여 (Pre-Engagement) |
첫 번째 단계는 사전 참여 단계에서
필요한 모든 문서를 작성하고, 평가 목표를 논의하고, 질문을
명확히 하는 것임. |
2. 정보 수집 (Information Gathering) |
사전 참여 활동이 완료되면 우리는
평가하도록 지정된 회사의 기존 웹사이트를 조사함. 우리는 사용 중인 기술을 식별하고
웹 애플리케이션이 어떻게 작동하는지 배움. |
3. 취약점 평가 (Vulnerability Assessment) |
이 정보를 사용하여 알려진 취약점을
찾고 의도하지 않은 작업을 허용할 수 있는 의심스러운 기능을 조사할 수 있음. |
4. 악용 (Exploitation) |
잠재적인 취약점을 발견한 후에는
익스플로잇 코드(exploit code), 도구 및 환경을 준비하고 이러한 잠재적인 취약점에 대해
웹 서버를 테스트함. |
5. 사후 악용 (Post-Exploitation) |
타켓 공격에 성공하면 정보 수집에
뛰어들어 내부에서 웹서버를 검사함. 이 단계에서 중요한 정보를 발견하면 (시스템 및 구성에 따라) 권한을 상승하려고 함. |
6. 측면 이동 (Lateral Movement) |
내부 네트워크의 다른 서버와
호스트가 범위 내에 있으면 우리는 수집한 정보를 사용하여 네트워크를 통해 이동하고 다른 호스트와 서버에 접근하려고 시도함. |
7. 개념 증명 (Proof-of-Concept) |
우리는 이러한 취약점이 존재함을
증명하고 잠재적으로 이러한 취약점을 유발하는 개별 단계를 자동화하는 개념 증명을 만듬. |
8. 사후 참여 (Post-Engagement) |
마지막으로 문서가 완성되어 고객에게
공식 보고서 제공물로 제공됨. 그 후, 우리는 테스트나 결과에 대한 모든 사항을 명확히 하고 발견 사항을 수정하는 담당자에게 필요한 지원을 제공하기
위해 보고서 연습 회의를 개최할 수 있음. |
댓글 없음:
댓글 쓰기