컴퓨터 보안의 역사와 침투 테스트의 중요성
1967년, 랜드 연구소의 윌리스 웨어, 레인 턴, 해롤드 피터슨, 버나드 피터스 등 컴퓨터 보안 전문가들은 컴퓨터 간 통신망이 쉽게 침투될 수 있다는 것을 인지했습니다. 그들은 공동 컴퓨터 회의 후 보고서를 작성하여 이 사실을 공식화했습니다. 이 보고서는 최초의 컴퓨터 보안 위협에 대한 인식을 높이는 데 중요한 역할을 했습니다.
이후 컴퓨터 보안을 침해하기 위한 다양한 방법들이 개발되었고, 제임스 P. 앤더슨은 이러한 침투 시도를 분석하여 단계별 접근 방식을 개발했습니다. 이는 오늘날의 침투 테스트의 기초가 되었습니다. 이러한 침투 테스트는 단순한 구조를 가지고 있습니다. 보안팀은 취약점 발견부터 대응 방안 개발까지 여러 단계를 거쳐 시스템의 보안을 강화합니다. 침투 테스트의 역사에서 더 자세한 내용을 확인할 수 있습니다.
기업 보안을 위협하는 것은 결코 쉬운 일이 아니며, 상당한 기술과 시간이 필요합니다. 하지만 오늘날의 기술 발전을 고려할 때, 악의적인 공격자들은 기업의 취약점을 보다 쉽게 찾아낼 수 있습니다. 이러한 공격은 주로 인터넷에 노출된 기업의 자산(웹 애플리케이션, 웹사이트, DNS 서버, 이메일 등)을 대상으로 이루어지며, 이를 통해 권한을 획득하고 중요한 데이터를 탈취하려 합니다.
침투 테스트는 기업이 실제 공격이 발생하기 전에 잠재적인 공격 경로를 식별하고 방어 체계를 강화하는 데 매우 유용합니다. 연구 결과에 따르면, 성공적인 침해 사고의 상당 부분(약 73%)이 웹 애플리케이션의 취약점을 통해 발생한다는 점을 고려할 때, 침투 테스트의 중요성은 더욱 강조됩니다. 침투 테스트 관련 통계를 참고하세요.
오늘날 기업들은 그 어느 때보다 애플리케이션, 시스템, 네트워크의 보안 상태를 철저히 검증해야 합니다. 모의 침투 테스트는 시스템의 보안 강도와 제어 메커니즘을 확인하는 데 효과적인 방법입니다. 이러한 테스트는 일회성으로 끝나는 것이 아니라, 기업의 구조와 평가 결과에 따라 정기적으로 실시해야 합니다.
침투 테스트는 복잡해 보일 수 있지만, 필요한 기술을 갖춘 IT 팀이라면 기업은 보안 수준을 꾸준히 유지할 수 있습니다. 특히 중요한 인프라를 업데이트하거나 새로운 디지털 서비스를 도입할 때 보안을 강화하는 데 큰 도움이 됩니다.
가장 중요한 것은 침투 테스트의 프로세스를 정확히 이해하는 것입니다.
침투 테스트란 무엇인가?
침투 테스트(줄여서 펜 테스트라고도 함)는 안전하고 통제된 환경에서 기업을 대상으로 진행되는 합법적인 사이버 공격입니다. 본격적인 방법에 대해 논하기 전에, 침투 테스트의 정의와 목적에 대해 명확히 하는 것이 중요합니다.
보안 감사와 함께 진행되는 침투 테스트는 조직의 시스템 내에서 관리되는 범위 내에서 취약점을 발견하는 것을 목표로 합니다. 테스트 방식은 실제 해커의 공격 방식과 유사합니다. 기업이 침투 테스트를 실시해야 하는 주된 이유는 다음과 같습니다.
- 해커보다 먼저 숨겨진 취약점을 발견합니다.
- 보안 프로세스와 전략을 강화합니다.
- 문제 해결 비용을 절감하고 복구 시간을 단축합니다.
- 보안 및 개인 정보 보호 관련 규정을 준수합니다.
- 브랜드 평판을 유지하고 고객 충성도를 높입니다.
펜 테스트는 기업의 보안 상태(공격에 대한 회복력)를 확인하고, 시스템이 얼마나 쉽게 해킹될 수 있는지를 보여줍니다. 또한, 침투 테스트를 통해 얻은 정보는 사이버 보안 투자를 최적화하고, 업계 표준을 준수하며, 잠재적 위협으로부터 기업을 보호하기 위한 효과적인 방어 전략을 수립하는 데 도움이 됩니다. 이 모든 것은 자동화된 펜 테스트 도구를 통해 가능합니다.
펜 테스트 도구란 무엇인가?
윤리적 해커들은 침투 테스트 도구를 사용하여 전 세계적인 공격 시뮬레이션을 통해 컴퓨팅 인프라의 탄력성을 평가합니다. 보안팀은 이러한 도구를 활용하여 반복적인 테스트 작업을 자동화하고, 보고서 생성 시간을 단축하며, 여러 스캐너 사용 비용을 줄일 수 있습니다.
펜 테스트 도구는 오픈 소스, 웹 앱, 네트워크, 모바일 앱, 클라우드, 수동, 자동화, 서비스형 침투 테스트 등 다양한 유형으로 제공됩니다. 이러한 다양한 유형 중에서 실행 가능한 보고서, CI/CD 통합, 문제 해결 지원, 침투 테스트 인증서(공개적으로 이용 가능한 침투 테스트 인증서를 제공하는 곳은 많지 않습니다)와 같은 주요 기능을 갖춘 도구를 선택하는 것이 좋습니다.
이제 침투 테스트 프로세스의 단계를 자세히 살펴보겠습니다.
침투 테스트 단계
일반적인 침투 테스트는 여러 단계로 구성됩니다. 다양한 자료에서 다양한 단계의 프로세스를 제시하지만, 전체적인 구조는 크게 변하지 않습니다. 일반적으로 정찰, 검색, 취약점 평가, 악용, 보고 등의 단계를 거칩니다.
성공적인 테스트를 위해서는 각 단계에 적합한 도구를 사용해야 합니다. 침투 테스트 프로세스의 각 단계는 다음과 같이 정의할 수 있습니다.
정보 수집
종종 간과되기도 하는 정보 수집 단계는 조직과 침투 테스터가 공통 기반을 마련하는 데 도움이 됩니다. 이 단계에서는 명확한 목표와 목적을 바탕으로 작업 범위, 참여 규칙, 일정, 정확한 실행 계획을 정의합니다.
정확하고 유용한 침투 테스트를 위해서는 이 단계를 통해 테스트가 필요한 영역과 최적의 방법을 이해해야 합니다. 이 단계는 침투 테스트의 기초 단계이므로 간과하지 않도록 주의해야 합니다.
시스템을 테스트하기 전에 조직은 테스터에게 동의해야 합니다. 그렇지 않으면 테스터의 행위는 불법으로 간주될 수 있습니다. 조직은 테스터 참여 시 원활한 작업 흐름을 위해 명확한 규칙(계약)을 마련해야 합니다. 계약에는 중요한 자산, 테스트 목표, 안전 조치 등이 포함되어야 합니다. 이 단계는 이후 모든 작업에 영향을 미치므로, 계획은 예상되는 테스트 결과와 일치하도록 수립해야 합니다.
정찰/OSINT 수집
이 단계에서 테스터는 시스템에 대해 공개적으로 이용 가능한 모든 정보를 수집합니다. 수집된 데이터는 다가오는 테스트와 연결되어 있으며, 1단계에서 설정된 계획에 따라 결정됩니다. 이를 통해 테스터는 수집해야 할 데이터와 구현해야 할 전략을 정확하게 파악할 수 있습니다. 능동 정찰을 선택하면 테스터가 시스템에 직접적으로 관여합니다. 반면 수동 정찰은 공개적으로 이용 가능한 정보를 수집합니다. 일반적으로 두 가지 방법을 모두 사용하는 것이 좋습니다.
능동적 데이터 수집은 네트워크, 운영 체제, 사용자 계정, 도메인 이름, 메일 서버, 애플리케이션 작업 등을 포함합니다. 수동적 데이터 수집은 공개 소스 인텔리전스(OSINT)를 활용하는 것을 의미합니다. 소셜 미디어, 세금 정보, 웹사이트 및 기타 공개 데이터를 사용할 수 있습니다.
다음은 필자와 동료들이 웹에서 정보를 수집하고 정리할 때 유용하고 사용하기 쉽다고 생각한 공개 소스 인텔리전스(OSINT) 도구입니다. OSINT 프레임워크를 사용하면 진입점과 취약점에 대한 광범위한 체크리스트를 만들 수 있습니다. 이 단계는 내부 및 외부 펜 테스트의 핵심이지만, 웹 애플리케이션, 모바일 앱, API 테스트에서는 종종 생략됩니다.
스캐닝
다음 단계는 시스템에 대한 심층적인 기술 검토입니다. 자동화된 취약점 스캐너 및 네트워크 매퍼와 같은 스캔 도구를 사용하여 대상 시스템이 다양한 침입 시도, 열린 포트, 네트워크 트래픽 등에 어떻게 반응하는지 이해할 수 있습니다.
이 단계의 주요 목표는 자산을 스캔하고 분석하는 것입니다. 예를 들어 Nmap과 같은 도구를 사용하여 컴퓨터 서비스와 호스트를 찾고, 패킷을 전송하여 응답을 분석할 수 있습니다. 이 단계를 마치면 운영 체제, 실행 중인 서비스, 열린 포트 등 자산에 대한 정보를 얻을 수 있습니다.
스캔 결과를 분석하면 익스플로잇을 계획할 수 있는 기반이 마련됩니다. 시스템의 디지털 환경을 파악하고 가능한 공격 지점을 찾을 수 있습니다. 정적 및 동적 분석을 수행하여 다양한 조건에서 시스템이 어떻게 반응하는지 명확히 이해할 수 있습니다.
정적 분석은 아직 실행되지 않은 애플리케이션의 코드를 검사합니다. 도구를 사용하여 코드베이스를 효율적으로 스캔할 수 있습니다. 동적 분석은 애플리케이션이 실행되는 동안 코드를 검사합니다. 이후 단계의 성공 여부는 이 단계에서 수집된 정보의 정확성에 달려 있으므로, 이 단계에서 정보를 수집할 때 신중해야 합니다.
평가/액세스 확보
이 단계에서는 이전 단계에서 수집된 모든 데이터를 바탕으로 취약점과 악용 가능성을 평가합니다. 이 단계는 다른 침투 테스트 프로세스와 함께 진행될 때 매우 강력한 효과를 발휘합니다.
발견된 취약점과 관련된 위험을 평가하기 위해 테스터는 다양한 리소스를 활용합니다. 그중 하나는 NVD(National Vulnerability Database)로, CVE(Common Vulnerabilities and Exposures)에 게시된 소프트웨어의 취약점을 분석합니다.
다음으로, 공격 대상을 식별하고 공격 벡터를 매핑합니다. 공격 대상 영역에는 직원 데이터, 고객 정보, 파트너/공급망, 공급업체, 포트, 앱, 프로토콜 등과 같은 고가치 자산이 포함됩니다. 이 단계에서 본격적인 웹 앱 공격이 시작됩니다.
가장 일반적인 공격 유형은 SQL 인젝션, 크로스 사이트 스크립팅, 백도어 등입니다. 이러한 공격은 권한 상승, 트래픽 차단, 데이터 유출 등을 통해 시스템에 피해를 입히고, 그 효과를 평가합니다. 정보 수집 단계에서 정의된 범위에 따라 테스터는 지정된 제약 조건 내에서 작업을 진행합니다.
악용
액세스 유지 단계라고도 하는 이 단계에서는 테스터가 발견된 취약점을 실제로 악용할 수 있는지 확인합니다. 실제 시스템 침투 시도 및 검증이 이 단계에서 이루어집니다. 테스터는 Metasploit과 같은 도구를 사용하여 실제 공격을 시뮬레이션합니다.
이 단계가 진행됨에 따라 테스터는 조직의 리소스에 대한 책임을 지게 되며, 시뮬레이션 후 시스템이 손상되지 않도록 보장해야 합니다.
Metasploit은 취약점 악용 시 원활한 작동을 위해 주로 사용됩니다. 이 단계에서는 침해의 영향을 측정합니다. 테스터는 데이터 암호화 또는 유출을 시도하고, 랜섬웨어 공격 및 제로데이 공격을 시뮬레이션할 수 있습니다. 성공적인 침투 테스트의 핵심은 공격 범위를 확장하는 것과 시스템 무결성을 유지하는 것 사이의 균형을 맞추는 것입니다.
전문가와 함께 작업하는 것이 가장 좋습니다. 전문가들은 자동화를 통해 쉽게 간과될 수 있는 취약점을 악용합니다. 이 단계를 마칠 때쯤이면 사용 가능한 데이터를 식별하여 시스템 및 네트워크 정보에 대한 높은 수준의 액세스 권한을 확보해야 합니다. 윤리적 해커는 중요한 표적을 악용한 결과에 대해서도 설명해야 합니다.
위험 분석 및 권고, 검토, 보고
악용 단계를 마치면 테스터는 결과를 문서화한 보고서를 생성합니다. 이 보고서는 발견된 취약점을 수정하는 데 사용해야 합니다.
침투 테스트 보고서는 기업이 보안 위험을 해결하는 데 도움이 되는 잘 문서화된 취약점 저장소 역할을 합니다. 훌륭한 보고서는 발견된 모든 취약점과 CVSS 점수, 기술적 위험 개요, 비즈니스에 미칠 수 있는 영향, 악용 난이도에 대한 자세한 정보, 그리고 전술적 조언까지 제공합니다.
보고서에는 모든 단계, 테스트 모델, 사용된 기술, 대상 자산 등이 문서화되어야 합니다. 가능하면 테스터는 테스트가 관련 프레임워크 요구 사항을 충족하는지에 대한 의견을 제시합니다. 결론적으로 보고서는 일반적인 설명과 기술 가이드를 함께 제공하는 것이 가장 좋습니다.
보고서를 작성한 후에는 시스템을 정리하는 것이 중요합니다. 즉, 테스트 이전 상태로 시스템을 되돌려야 합니다. 시스템 정리 작업에는 손상된 시스템에서 모든 실행 파일, 임시 파일, 스크립트를 제거하고, 시스템 액세스를 위해 생성된 사용자 계정을 제거하고, 환경에서 루트킷을 삭제하는 작업이 포함됩니다.
마지막으로 문제 해결은 조직의 책임입니다. 침투 테스트 보고서 및 조사 결과를 바탕으로 조직은 취약점을 해결하고, 잠재적 영향을 분석하고, 향후 의사 결정을 내리고, 수정 전략을 수립합니다. 이 단계는 과거의 실수를 개선하는 단계이므로, 악용 가능한 모든 취약점을 합리적인 시간 내에 해결해야 합니다. 때로는 이 단계가 업데이트에 대한 반복 테스트를 수행하거나 추가 테스트를 위해 연장될 수 있습니다.
펜 테스트의 실제 적용: 단계별 가이드
이 예에서는 Metasploit 프레임워크를 사용합니다. 사용자 정의 워크플로를 만들 수 있으며, 다음은 일반적인 예입니다. 먼저 프레임워크를 설치합니다.
Linux/macOS 사용자의 경우 다음 명령을 사용하세요.
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \ chmod 755 msfinstall && \ ./msfinstall
Windows 사용자의 경우, 최신 Windows 설치 프로그램을 사용하거나, 셸 명령을 사용하세요.
[CmdletBinding()] Param( $DownloadURL = "https://windows.metasploit.com/metasploitframework-latest.msi", $DownloadLocation = "$env:APPDATA/Metasploit", $InstallLocation = "C:\Tools", $LogLocation = "$DownloadLocation/install.log" ) If(! (Test-Path $DownloadLocation) ){ New-Item -Path $DownloadLocation -ItemType Directory } If(! (Test-Path $InstallLocation) ){ New-Item -Path $InstallLocation -ItemType Directory } $Installer = "$DownloadLocation/metasploit.msi" Invoke-WebRequest -UseBasicParsing -Uri $DownloadURL -OutFile $Installer & $Installer /q /log $LogLocation INSTALLLOCATION="$InstallLocation"
설치가 완료되면 다음 단계를 따르세요.
프로젝트 시작 – 데이터와 작업 공간을 위한 저장소를 생성합니다. 조직의 다양한 서브넷은 요구 사항이 다를 수 있으므로 작업을 정리하면 효율성을 높일 수 있습니다. 예를 들어, IT 및 인사팀을 위한 침투 테스트가 필요한 경우 별도의 결과를 생성해야 합니다.
이미지 출처 – 메타스플로잇
대상 데이터 가져오기 – 검색 스캔을 통해 프로젝트에 데이터를 추가하거나 기존 데이터를 가져옵니다. 네트워크 서비스를 확인하기 위해 대상을 스캔하여 열린 포트를 확인합니다. 스캔 옵션을 사용하고, 작업할 IP 주소를 한 줄에 하나씩 입력합니다. 가져오기 옵션을 사용하여 로컬 파일에서 데이터를 가져올 수도 있습니다.
이미지 출처 – 메타스플로잇
호스트 데이터 보기/관리 – 호스트 또는 프로젝트 수준에서 데이터를 한눈에 볼 수 있습니다. 각 IP로 전환하여 단일 호스트 보기를 확인할 수 있습니다.
이미지 출처 – 메타스플로잇
취약점 스캔 – Nexpose 옵션을 통해 취약점 스캔을 시작합니다. 이 단계에서는 취약점 데이터베이스를 활용하여 발견된 취약점을 매칭합니다.
취약점 악용 – 보안을 유지하면서 취약점을 악용할 수 있습니다. 검증 마법사를 사용하거나 Nexpose를 통해 진행합니다.
공격 후 활동 – 세션 탭을 통해 공격으로부터 데이터를 수집합니다. “수집”을 클릭하세요.
이미지 출처 – 메타스플로잇
정리 – 데이터 수집이 완료되면 “정리” 옵션을 사용하여 세션을 종료하고 시스템을 정리합니다.
보고서 생성 – 펜 테스트가 끝나면 Metasploit은 데이터 통합 및 결과 편집의 시작점이 되는 다양한 보고서를 제공합니다.
펜 테스트에 대한 자세한 빠른 시작 가이드는 Metasploit의 빠른 시작 가이드에서 확인할 수 있습니다.
일반적인 펜 테스트 도구
일반적으로 사용되는 몇 가지 도구로는 Sn1per, Metasploit, Commix 등이 있습니다.
#1. Sn1per
Sn1per는 해킹 시나리오에서 클라이언트 측 공격의 영향을 검증하는 취약점 조사 도구입니다. 이 도구를 사용하면 통제된 환경에서 원격 공격 및 사용자 측 공격을 시뮬레이션할 수 있습니다. Sn1per는 6,000개가 넘는 GitHub 스타를 확보했으며, 이는 도구에 대한 높은 관심을 보여줍니다. 또한 Sn1per는 다양한 미디어 플랫폼에서 활용되고 있습니다. Sn1per를 사용하면 오픈 소스 및 상용 도구를 자동화하여 취약점을 열거함으로써 시간을 절약할 수 있습니다.
#2. 메타스플로잇
메타스플로잇은 오픈 소스 커뮤니티의 공유 지식을 기반으로 개발된 대규모 침투 테스트 프레임워크입니다. GitHub에서 31.2k 개의 스타를 획득했으며, 이는 소프트웨어 분야에서 강력한 영향력을 입증합니다. Metasploit은 보안 인식을 높이고 취약점을 해결하는 것을 목표로 하는 보안 전문가들의 협력을 통해 발전하고 있습니다.
#3. 콤믹스
콤믹스는 뛰어난 OS 명령 삽입 공격 도구입니다. Commix는 명령 삽입 취약점에 특화되어 있지만, 사용하기 쉽고 무료 오픈 소스이며, 크로스 플랫폼과 호환되고 이식 가능하며 모듈화되어 있습니다. 4k GitHub 스타를 획득했으며, 무료 오픈 소스 도구로 제공됩니다.
최종 단어
사이버 공격이 증가함에 따라, 기업이 디지털 제품의 탄력성을 강화하기 위해서는 침투 테스트 단계를 세분화하는 것이 필수적입니다. 사이버 범죄자들이 기존 보안 솔루션을 우회하는 상황에서, 침투 테스트를 통해 실제 공격을 시뮬레이션하는 것은 끊임없이 진화하는 사이버 위협 환경에 대처하는 효과적인 방법입니다.
조직의 특정 요구 사항에 맞게 침투 테스트를 조정하면 보안 정책의 효율성을 높일 수 있습니다. 침투 테스트의 모든 단계를 거치면 사이버 보안 투자에 대한 최대의 ROI를 얻을 수 있습니다.
성공적인 침투 테스트를 위해서는 신중하게 접근해야 합니다. 먼저 테스트에 대한 정보를 충분히 습득하고, 이를 바탕으로 정찰 단계를 수행합니다. 정찰 단계에서는 테스트 대상 시스템의 범위와 목표를 명확히 정의해야 합니다.
다음으로, 시스템을 스캔하여 심층적인 정보를 얻고 취약점을 식별합니다. 시스템 손상을 방지하면서 공격을 시작하고, 이후에는 취약점 해결을 위한 유용한 보고서를 생성합니다. 마지막으로 시스템을 정리하고 원래 상태로 복원하는 것을 잊지 마세요.
올바르게 활용하면 침투 테스트는 취약점을 식별하고 수정하여 조직의 보안 상태를 개선합니다. 많은 조직이 클라우드로 이전하고 새로운 기술을 채택함에 따라, 정보 보안 분야에서 침투 테스트의 중요성은 더욱 커지고 있습니다. 실제로 75%의 기업이 보안 태세를 점검하거나 규정 준수를 위해 펜 테스트를 실시합니다. 신중하게 테스트를 진행하고 각 단계를 독립적으로 처리한다면, 침투 테스트를 통해 항상 가치를 창출할 수 있을 것입니다.
다음으로, 애플리케이션 보안을 테스트하기 위한 무료 온라인 침투 테스트 도구를 확인해 보세요.