complete penetration testing guide with sample test cases
다양한 악성 기술로 시스템 또는 네트워크를 평가하여 애플리케이션의 보안 취약성을 식별하는 프로세스입니다. 시스템의 취약점은 승인 된 시뮬레이션 공격을 통해이 프로세스에서 악용됩니다.
이 테스트의 목적은 시스템에 무단 액세스 할 수있는 해커와 같은 외부인으로부터 중요한 데이터를 보호하는 것입니다. 취약성이 확인되면 민감한 정보에 액세스하기 위해 시스템을 악용하는 데 사용됩니다.
침투 테스트는 펜 테스트라고도하며 침투 테스터는 윤리적 해커라고도합니다.
학습 내용 :
침투 테스트 란 무엇입니까?
침투 테스트를 통해 컴퓨터 시스템, 웹 애플리케이션 또는 네트워크의 취약성을 파악할 수 있습니다.
침투 테스트는 시스템에 적용된 기존 방어 수단이 보안 침해를 방지 할 수있을만큼 강력한 지 여부를 알려줍니다. 침투 테스트 보고서는 또한 시스템이 해킹 당할 위험을 줄이기 위해 취할 수있는 조치를 제안합니다.
취약점의 원인
- 설계 및 개발 오류 : 하드웨어 및 소프트웨어 설계에 결함이있을 수 있습니다. 이러한 버그로 인해 업무상 중요한 데이터가 노출 될 위험이 있습니다.
- 시스템 구성 불량 : 이것은 취약점의 또 다른 원인입니다. 시스템이 잘못 구성되면 공격자가 시스템에 침입하여 정보를 훔칠 수있는 허점을 만들 수 있습니다.
- 인적 오류 : 문서의 부적절한 폐기, 문서 방치, 코딩 오류, 내부자 위협, 피싱 사이트를 통한 비밀번호 공유 등과 같은 인적 요인이 보안 침해로 이어질 수 있습니다.
- 연결성 : 시스템이 보안되지 않은 네트워크 (개방형 연결)에 연결되어 있으면 해커의 손에 닿습니다.
- 복잡성 : 시스템의 복잡성에 비례하여 보안 취약점이 증가합니다. 시스템에 더 많은 기능이있을수록 시스템이 공격을받을 가능성이 높아집니다.
- 비밀번호 : 비밀번호는 무단 접근을 방지하기 위해 사용됩니다. 아무도 귀하의 암호를 추측 할 수 없을 정도로 강력해야합니다. 어떤 비용으로도 암호를 다른 사람과 공유해서는 안되며 주기적으로 암호를 변경해야합니다. 이러한 지침에도 불구하고 사람들은 때때로 자신의 암호를 다른 사람에게 공개하고 어딘가에 적어두고 추측 할 수있는 쉬운 암호를 보관합니다.
- 사용자 입력 : SQL 인젝션, 버퍼 오버 플로우 등에 대해 들어 보셨을 것입니다. 이러한 방법을 통해 전자적으로 수신 된 데이터는 수신 시스템을 공격 할 수 있습니다.
- 조치 : 보안은 관리하기 어렵고 비용이 많이 듭니다. 때때로 조직은 적절한 위험 관리에 뒤쳐져 시스템에 취약성이 유발됩니다.
- 직원 교육 부족 : 이로 인해 인적 오류 및 기타 취약성이 발생합니다.
- 통신 : 모바일 네트워크, 인터넷, 전화와 같은 채널은 보안 도난 범위를 엽니 다.
침투 테스트 도구 및 회사
자동화 된 도구를 사용하여 애플리케이션에 존재하는 몇 가지 표준 취약점을 식별 할 수 있습니다. Pentest 도구는 코드를 스캔하여 잠재적 인 보안 위반으로 이어질 수있는 악성 코드가 있는지 확인합니다. Pentest 도구는 데이터 암호화 기술을 검사하고 사용자 이름 및 암호와 같은 하드 코딩 된 값을 파악하여 시스템에 존재하는 보안 허점을 확인할 수 있습니다.
최상의 침투 도구를 선택하는 기준 :
순환 연결 목록 C ++
- 배포, 구성 및 사용이 쉬워야합니다.
- 시스템을 쉽게 스캔해야합니다.
- 즉각적인 수정이 필요한 심각도에 따라 취약성을 분류해야합니다.
- 취약점 확인을 자동화 할 수 있어야합니다.
- 이전에 발견 된 익스플로잇을 다시 확인해야합니다.
- 자세한 취약점 보고서 및 로그를 생성해야합니다.
수행해야하는 테스트를 알고 나면 내부 테스트 리소스를 교육하거나 전문 컨설턴트를 고용하여 침투 작업을 수행 할 수 있습니다.
권장 침투 테스트 도구
# 1) Acunetix
Acunetix WVS는 보안 전문가와 소프트웨어 엔지니어 모두에게 쉽고 간단하며 매우 강력한 패키지로 다양한 놀라운 기능을 제공합니다.
=> 여기에서 최고의 펜 테스트 도구를 사용해보십시오
# 2) 침입자
침입자 디지털 자산에서 사이버 보안 약점을 찾아 내고 위험을 설명하며 침해가 발생하기 전에 문제를 해결하는 데 도움을주는 강력한 취약성 스캐너입니다. 침투 테스트 작업을 자동화하는 데 도움이되는 완벽한 도구입니다.
주요 특징들 :
- 전체 IT 인프라에 걸쳐 9,000 개 이상의 자동 검사.
- SQL 주입 및 교차 사이트 스크립팅과 같은 인프라 및 웹 계층 검사.
- 새로운 위협이 발견되면 자동으로 시스템을 검사합니다.
- 다양한 통합 : AWS, Azure, Google Cloud, API, Jira, Teams 등.
- Intruder는 Pro 플랜의 30 일 무료 평가판을 제공합니다.
추천 침투 테스트 회사
# 1) ImmuniWeb®
ImmuniWeb®은 스위스 제네바에 본사를 둔 침투 테스트 회사입니다. DevSecOps 지원 애플리케이션 침투 테스트 플랫폼은 인간과 인공 지능을 결합하며 오 탐지 SLA, 가장 높은 취약성 탐지 및 실행 가능한보고 기능을 제공합니다.
ImmuniWeb은 내부 및 외부 웹 및 모바일 앱, API 및 웹 서비스, 메일 서버, IoT 장치 등에 대한 포괄적 인 애플리케이션 침투 테스트를 제공합니다.
주요 특징들:
- 지속적인 새 코드 감지.
- 빠르고 비용 효율적인 수동 테스트.
- 원 클릭 가상 패칭 용량.
- 보안 분석가에 대한 연중 무휴 액세스.
- DevSecOps 및 CI / CD 통합.
- 즉시 주문 및 빠른 배송.
- 다중 역할 대시 보드.
기타 무료 도구 :
상업 서비스 :
37 개의 강력한 침투 테스트 도구에 대해 설명하는 STH에서 사용 가능한 아래 목록을 참조 할 수도 있습니다. => 모든 침투 테스터를위한 강력한 침투 테스트 도구
침투 테스트가 필요한 이유
2017 년 5 월에 시작된 WannaCry 랜섬웨어 공격에 대해 들어 보셨을 것입니다.이 공격은 전 세계 2 대 이상의 컴퓨터를 잠그고 비트 코인 암호 화폐로 몸값 지불을 요구했습니다. 이 공격은 전 세계의 많은 대기업에 영향을 미쳤습니다.
이처럼 거대하고 위험한 사이버 공격이 요즘 일어나고 있기 때문에 보안 침해로부터 정보 시스템을 보호하기 위해 정기적으로 침투 테스트를 수행하는 것이 불가 피해졌습니다.
따라서 침투 테스트는 주로 다음과 같은 경우에 필요합니다.
- 재무 또는 중요 데이터는 서로 다른 시스템간에 또는 네트워크를 통해 전송하는 동안 보안을 유지해야합니다.
- 많은 클라이언트가 소프트웨어 릴리스주기의 일부로 펜 테스트를 요청하고 있습니다.
- 사용자 데이터를 보호합니다.
- 응용 프로그램의 보안 취약성을 찾습니다.
- 시스템의 허점을 발견합니다.
- 성공적인 공격이 비즈니스에 미치는 영향을 평가합니다.
- 조직의 정보 보안 규정 준수를 충족합니다.
- 조직에서 효과적인 보안 전략을 구현합니다.
모든 조직은 내부 네트워크 및 컴퓨터에 존재하는 보안 문제를 식별해야합니다. 이 정보 조직을 사용하면 모든 해킹 시도에 대한 방어를 계획 할 수 있습니다. 사용자 개인 정보 및 데이터 보안은 오늘날 가장 큰 관심사입니다.
해커가 Facebook과 같은 소셜 네트워킹 사이트의 사용자 세부 정보를 얻을 수 있다고 상상해보십시오. 조직은 소프트웨어 시스템에 남아있는 작은 허점으로 인해 법적 문제에 직면 할 수 있습니다. 따라서 대기업은 타사 클라이언트와 거래하기 전에 PCI (Payment Card Industry) 규정 준수 인증을 찾고 있습니다.
무엇을 테스트해야합니까?
- 소프트웨어 (운영 체제, 서비스, 애플리케이션)
- 하드웨어
- 회로망
- 프로세스
- 최종 사용자 행동
침투 테스트 유형
# 1) 사회 공학 테스트 : 이 테스트에서는 비밀번호, 업무상 중요한 데이터 등과 같은 민감한 정보를 공개하도록 시도하고 있습니다. 이러한 테스트는 대부분 전화 나 인터넷을 통해 이루어지며 특정 헬프 데스크, 직원 및 프로세스를 대상으로합니다.
인적 오류는 보안 취약성의 주요 원인입니다. 사회 공학 침투 시도를 피하기 위해 모든 직원은 보안 표준 및 정책을 따라야합니다. 이러한 표준의 예에는 이메일 또는 전화 통신에서 민감한 정보는 말할 것도 없습니다. 보안 감사를 수행하여 프로세스 결함을 식별하고 수정할 수 있습니다.
mockito를 사용하여 비공개 메서드를 테스트하는 방법
# 2) 웹 애플리케이션 테스트 : 소프트웨어 방법을 사용하여 애플리케이션이 보안 취약성에 노출되었는지 확인할 수 있습니다. 대상 환경에 위치한 웹앱 및 소프트웨어 프로그램의 보안 취약점을 확인합니다.
# 3) 물리적 침투 테스트 : 민감한 데이터를 보호하기 위해 강력한 물리적 보안 방법이 적용됩니다. 이것은 일반적으로 군사 및 정부 시설에서 사용됩니다. 모든 물리적 네트워크 장치 및 액세스 포인트는 보안 위반 가능성에 대해 테스트됩니다. 이 테스트는 소프트웨어 테스트 범위와 크게 관련이 없습니다.
# 4) 네트워크 서비스 테스트 : 이것은 어떤 종류의 취약점이 있는지 확인하기 위해 네트워크의 시스템에 어떤 항목이 생성되는지에 따라 네트워크의 개구부를 식별하는 가장 일반적으로 수행되는 침투 테스트 중 하나입니다. 로컬 또는 원격으로 수행 할 수 있습니다.
# 5) 클라이언트 측 테스트 : 클라이언트 측 소프트웨어 프로그램의 취약점을 검색하고 악용하는 것을 목표로합니다.
# 6) 원격 전화 접속 전쟁 다이얼 : 환경에서 모뎀을 검색하고 암호 추측 또는 무차별 대입을 통해 이러한 모뎀을 통해 연결된 시스템에 로그인을 시도합니다.
# 7) 무선 보안 테스트 : 개방적이고 무단이며 보안이 취약한 핫스팟 또는 Wi-Fi 네트워크를 발견하고이를 통해 연결합니다.
위의 7 가지 범주는 펜 테스트 유형을 분류하는 한 가지 방법입니다. 또한 아래와 같이 침투 테스트 유형을 세 부분으로 구성 할 수 있습니다.
이 테스트 방법을 하나씩 논의 해 보겠습니다.
- 블랙 박스 침투 테스트 :이 접근 방식에서 테스터는 세부 사항에 대한 지식없이 대상 시스템, 네트워크 또는 프로세스를 평가합니다. 그들은 대상 환경에 침투하는 데 사용하는 URL 또는 회사 이름과 같은 매우 높은 수준의 입력을 가지고 있습니다. 이 메서드에서는 코드를 검사하지 않습니다.
- 화이트 박스 침투 테스트 :이 접근 방식에서 테스터는 대상 환경 (시스템, 네트워크, OS, IP 주소, 소스 코드, 스키마 등)에 대한 완전한 세부 정보를 갖추고 있습니다. 코드를 검사하고 설계 및 개발 오류를 찾습니다. 내부 보안 공격의 시뮬레이션입니다.
- 회색 상자 침투 테스트 :이 접근 방식에서 테스터는 대상 환경에 대한 세부 정보를 제한합니다. 외부 보안 공격의 시뮬레이션입니다.
펜 테스트 기법
- 수동 침투 테스트
- 자동 침투 테스트 도구 사용
- 수동 및 자동 프로세스의 결합
세 번째 프로세스는 모든 종류의 취약점을 식별하는 데 더 일반적입니다.
수동 침투 테스트
자동화 된 도구를 사용하여 모든 취약점을 찾기는 어렵습니다. 수동 스캔으로 만 식별 할 수있는 몇 가지 취약점이 있습니다. 침투 테스터는 침투되는 시스템에 대한 기술과 지식을 기반으로 애플리케이션에 대해 더 나은 공격을 수행 할 수 있습니다.
사회 공학과 같은 방법은 인간 만이 할 수 있습니다. 수동 검사에는 디자인, 비즈니스 로직 및 코드 검증이 포함됩니다.
침투 테스트 프로세스 :
테스트 대행사 또는 침투 테스터가 따르는 실제 프로세스에 대해 논의하겠습니다. 시스템에 존재하는 취약성을 식별하는 것이이 프로세스의 첫 번째 중요한 단계입니다. 이 취약점에 대해 수정 조치가 취해지며 시스템이 모든 테스트에 대해 음성이 될 때까지 동일한 침투 테스트가 반복됩니다.
이 프로세스를 다음과 같은 방법으로 분류 할 수 있습니다.
# 1) 데이터 수집 : Google 검색을 포함한 다양한 방법을 사용하여 타겟 시스템 데이터를 가져옵니다. 웹 페이지 소스 코드 분석 기술을 사용하여 시스템, 소프트웨어 및 플러그인 버전에 대한 자세한 정보를 얻을 수도 있습니다.
데이터베이스 또는 테이블 이름, DB 버전, 소프트웨어 버전, 사용 된 하드웨어 및 대상 시스템에서 사용되는 다양한 타사 플러그인과 같은 정보를 제공 할 수있는 많은 무료 도구 및 서비스가 시장에 나와 있습니다.
# 2) 취약성 평가 : 첫 번째 단계에서 수집 된 데이터를 기반으로 대상 시스템의 보안 취약점을 찾을 수 있습니다. 이를 통해 침투 테스터는 시스템에서 식별 된 진입 점을 사용하여 공격을 시작할 수 있습니다.
# 3) 실제 익스플로잇 : 이것은 중요한 단계입니다. 대상 시스템에 대한 공격을 시작하려면 특별한 기술과 기술이 필요합니다. 숙련 된 침투 테스터는 자신의 기술을 사용하여 시스템에 대한 공격을 시작할 수 있습니다.
# 4) 분석 결과 및 보고서 작성 : 침투 테스트가 완료되면 수정 조치를 취하기위한 세부 보고서가 준비됩니다. 확인 된 모든 취약성과 권장 수정 방법이이 보고서에 나열되어 있습니다. 조직의 필요에 따라 취약성 보고서 형식 (HTML, XML, MS Word 또는 PDF)을 사용자 정의 할 수 있습니다.
침투 테스트 샘플 테스트 케이스 (테스트 시나리오)
이것은 기능 테스트가 아닙니다. Pentest의 목표는 시스템의 보안 허점을 찾는 것입니다. 다음은 몇 가지 일반적인 테스트 사례이며 모든 애플리케이션에 반드시 적용되는 것은 아닙니다.
- 웹 애플리케이션이 웹 사이트에서 사용되는 연락처 양식에 대한 스팸 공격을 식별 할 수 있는지 확인하십시오.
- 프록시 서버 – 프록시 어플라이언스가 네트워크 트래픽을 모니터링하는지 확인합니다. 프록시 서버는 해커가 네트워크의 내부 세부 정보를 얻기 어렵게하여 외부 공격으로부터 시스템을 보호합니다.
- 스팸 이메일 필터 – 수신 및 발신 이메일 트래픽이 필터링되고 원치 않는 이메일이 차단되는지 확인합니다.
- 많은 이메일 클라이언트에는 필요에 따라 구성해야하는 스팸 필터가 내장되어 있습니다. 이러한 구성 규칙은 이메일 헤더, 제목 또는 본문에 적용 할 수 있습니다.
- 방화벽 – 전체 네트워크 또는 컴퓨터가 방화벽으로 보호되는지 확인합니다. 방화벽은 시스템에 대한 무단 액세스를 차단하는 소프트웨어 또는 하드웨어 일 수 있습니다. 방화벽은 사용자의 허가없이 네트워크 외부로 데이터를 보내는 것을 방지 할 수 있습니다.
- 모든 서버, 데스크탑 시스템, 프린터 및 네트워크 장치를 이용하십시오.
- 모든 사용자 이름과 비밀번호가 암호화되고 https와 같은 보안 연결을 통해 전송되는지 확인합니다.
- 저장된 정보 확인 웹 사이트 쿠키 . 읽을 수있는 형식이 아니어야합니다.
- 이전에 발견 된 취약점을 확인하여 수정 사항이 작동하는지 확인하십시오.
- 네트워크에 열린 포트가 없는지 확인하십시오.
- 모든 전화 장치를 확인하십시오.
- WIFI 네트워크 보안을 확인하십시오.
- 모든 HTTP 메소드를 확인하십시오. PUT 및 Delete 메서드는 웹 서버에서 활성화하면 안됩니다.
- 암호가 필수 표준을 충족하는지 확인하십시오. 암호는 최소 한 개의 숫자와 한 개의 특수 문자를 포함하는 8 자 이상이어야합니다.
- 사용자 이름은 'admin'또는 'administrator'와 같지 않아야합니다.
- 로그인 시도가 몇 번 실패하면 응용 프로그램 로그인 페이지를 잠 가야합니다.
- 오류 메시지는 일반적이어야하며 '잘못된 사용자 이름'또는 '잘못된 암호'와 같은 특정 오류 세부 정보를 언급해서는 안됩니다.
- 특수 문자, HTML 태그 및 스크립트가 입력 값으로 올바르게 처리되는지 확인하십시오.
- 내부 시스템 세부 정보는 오류 또는 경고 메시지에 표시되지 않아야합니다.
- 웹 페이지가 충돌하는 경우 최종 사용자에게 사용자 지정 오류 메시지가 표시되어야합니다.
- 레지스트리 항목의 사용을 확인하십시오. 민감한 정보는 레지스트리에 보관해서는 안됩니다.
- 모든 파일은 서버에 업로드하기 전에 스캔해야합니다.
- 웹 애플리케이션의 다른 내부 모듈과 통신하는 동안 민감한 데이터를 URL로 전달해서는 안됩니다.
- 시스템에 하드 코딩 된 사용자 이름이나 암호가 없어야합니다.
- 공백이 있거나없는 긴 입력 문자열이있는 모든 입력 필드를 확인하십시오.
- 암호 재설정 기능이 안전한지 확인하십시오.
- 신청 확인 SQL 주입 .
- 신청 확인 교차 사이트 스크립팅 .
- 중요한 입력 유효성 검사는 클라이언트 측에서 JavaScript 검사 대신 서버 측에서 수행해야합니다.
- 시스템의 중요한 리소스는 권한이있는 사람과 서비스 만 사용할 수 있어야합니다.
- 모든 액세스 로그는 적절한 액세스 권한으로 유지되어야합니다.
- 로그 오프시 사용자 세션이 종료되는지 확인합니다.
- 서버에서 디렉터리 검색이 비활성화되어 있는지 확인합니다.
- 모든 애플리케이션 및 데이터베이스 버전이 최신인지 확인하십시오.
- 웹 애플리케이션이 원치 않는 정보를 표시하지 않는지 확인하려면 URL 조작을 확인하십시오.
- 메모리 누수 및 버퍼 오버플로를 확인합니다.
- 트로이 목마 공격을 찾기 위해 들어오는 네트워크 트래픽을 검사하는지 확인합니다.
- 암호와 같은 민감한 정보를 찾기위한 시행 착오 방법 인 무차별 대입 공격으로부터 시스템이 안전한지 확인합니다.
- 시스템 또는 네트워크가 DoS (서비스 거부) 공격으로부터 보호되는지 확인합니다. 해커는 대상 시스템의 리소스가 과부하되어 합법적 인 요청에 대한 서비스 거부를 초래하는 지속적인 요청으로 네트워크 또는 단일 컴퓨터를 대상으로 지정할 수 있습니다.
- HTML 스크립트 삽입 공격에 대한 애플리케이션을 확인합니다.
- COM 및 ActiveX 공격에 대해 확인합니다.
- 스푸핑 공격에 대해 확인합니다. 스푸핑은 IP 주소 스푸핑, 이메일 ID 스푸핑,
- ARP 스푸핑, 리퍼러 스푸핑, 발신자 ID 스푸핑, 파일 공유 네트워크 중독, GPS 스푸핑.
- 제어되지 않는 형식 문자열 공격 (응용 프로그램을 중단 시키거나 유해한 스크립트를 실행할 수있는 보안 공격)을 확인합니다.
- XML 주입 공격 확인 – 응용 프로그램의 의도 된 논리를 변경하는 데 사용됩니다.
- 정규화 공격에 대해 확인합니다.
- 오류 페이지에 해커가 시스템에 입력하는 데 도움이 될 수있는 정보가 표시되는지 확인합니다.
- 암호와 같은 중요한 데이터가 시스템의 비밀 파일에 저장되어 있는지 확인합니다.
- 애플리케이션이 필요한 것보다 더 많은 데이터를 반환하는지 확인합니다.
이것은 Pentest를 시작하기위한 기본적인 테스트 시나리오 일뿐입니다. 수동으로 또는 자동화 도구를 사용하여 수행 할 수있는 수백 가지 고급 침투 방법이 있습니다.
추가 자료 :
PL / SQL 개발자 인터뷰 질문
펜 테스트 표준
- PCI DSS (결제 카드 산업 데이터 보안 표준)
- OWASP (웹 애플리케이션 보안 프로젝트 열기)
- ISO / IEC 27002 , OSSTMM (오픈 소스 보안 테스트 방법론 매뉴얼)
인증
결론
마지막으로 침투 테스터는 시스템의 모든 취약성을 수집하고 기록해야합니다. 최종 사용자가 실행하지 않는다는 점을 고려하여 시나리오를 무시하지 마십시오.
침투 테스터 인 경우 침투 테스트를 효과적으로 수행하는 방법에 대한 경험, 팁 및 샘플 테스트 사례를 통해 독자를 도와주세요.