검수요청.png검수요청.png

ZAP

위키원
이동: 둘러보기, 검색
ZAP
ZAP

ZAP(잽)이란 "Zed Attack Proxy"의 약자로서, OWASP가 개발한 오픈소스 웹 애플리케이션 보안 스캐너이다. OWASP ZAP이라고도 한다. 개발단계에서 손쉽게 보안 취약점을 발견하고 조치할 수 있도록 하는 오픈소스 제품이다.[1]

개요[편집]

ZAP은 세계에서 가장 인기 있는 무료 보안 도구 중 하나이다. 오픈소스로 공개되어 있으며 깃허브에서 해당 파일을 받을 수 있다. 여러 국가에서 프로그래머들이 자발적으로 유지보수를 지원하고 있기 때문에 유연성과 확장성이 뛰어나다는 장점이 있다. ZAP은 브라우저와 웹 애플리케이션 사이에 전송된 메시지를 가로채고 검사할 수 있도록 테스터의 브라우저와 웹 애플리케이션 사이에 있으며 중간자 역할을 수행한다. 필요한 경우 내용을 수정한 다음 그 패킷들을 목적지에 전달할 수 있다. 2010년에 1.0.0 버전이 처음 출시됐으며 2020년 현재는 2.9.0 버전이 출시되었다. 출시된 이래로 ZAP 사용량은 꾸준하게 증가해 왔으며 2020년 3월 기준 ZAP은 85,000회 이상 다운로드되었고, ZAP 도커 이미지는 220,000회 이상 받아졌으며 100만 번 이상 실행되었다. ZAP 데스크톱의 국가별 사용량 순위는 1위가 미국, 2위가 인도, 3위가 일본이며, ZAP 데몬의 국가별 사용량 순위는 1위가 미국, 2위가 호주, 3위가 독일이다. 2011년에는 올해의 툴 스미스 툴로 뽑혔다. ToolsWatch.org 독자가 2013년에는 최고의 보안 도구로, 2014년 최고의 보안 도구 2위로 뽑았다. 2015년 최고의 오픈소스 소프트웨어 어워드인 보시어워드(Bossie Award)에서 오픈 소스 네트워킹 및 보안 소프트웨어로 언급된 OWASP 도구 중 하나이다.[2]

기능[편집]

  • 프록시 : 클라이언트와 서버 사이의 중계기이다.[3] 애플리케이션과 브라우저 간의 HTTP 통신 내용을 저장한다. 그리고 보안 진단을 위해 요청을 보내면 응답 데이터를 시각화한다.[1]
  • 스파이더 : 해당 URL을 크롤링하여 어떤 콘텐츠와 기능들이 있는지 스캔하는 기능으로[4], 전체 웹 애플리케이션에 대한 정보를 수집한다. 그리고 비공개 파일이나 디렉터리의 유무를 확인한다.[1]
  • 정적·동적 검색 : 다양한 취약점을 자동으로 감지한다.[1]
  • 퓨저(Fuzzer) : 기본적인 정적·동적 스캔으로는 검출이 어려운 취약점을 수동으로 검색한다.[1]
  • 애드온 스크립트 : 애플리케이션 고유의 기능에 대응하는 진단 도구를 작성한다.[1]
  • ZAP API : 검색과 스파이더 등 외부에서 다양한 기능을 조작하여 진단 작업을 완벽하게 자동화한다.[1]
  • 4가지 모드
  1. 안전모드: 위험한 액션은 모두 제외된 상태로, 프록시로의 기능에 충실한 모드이다.
  2. 보호모드: 구간에 위험한 액션에 대해 상황에 따라 시뮬레이팅이 가능하다.
  3. 표준모드: 제한 없이 모든 기능이 사용할 수 있다.
  4. 공격모드: 스코프 된 도메인 중 새로운 노드가 발견되면 자동으로 액티스 스캔(Active Scan)이 진행된다. 액티브 스캔은 선택한 대상에 대해 알려진 공격을 사용하여 잠재적인 취약점을 찾으려고 시도한다.[5][6]

취약점[편집]

웹 애플리케이션[편집]

에스큐엘(SQL; Structure Query Language)이나 운영체제 명령을 주입하는 등 서버를 목표로 하는 입력 기반 취약점이 있고, 사이트 간 스크립팅(XSS) 같은 클라이언트 측을 목표로 하는 입력 기반 취약점 있다. 그리고 웹 애플리케이션과 브라우저 중간에서 비밀번호나 쿠키를 암호화하지 않고 전송하는 등 요청과 응답 주기를 조사해서 식별할 수 있는 취약점이 있다.[7]

스캐너[편집]

웹 스캐너가 찾는 취약점 유형에는 한계가 있다. 취약한 비밀번호, 의미 있는 매개변수 이름, 저장된 에스큐엘 주입(2차 에스큐엘 주입), 여러 단계의 저장된 사이트 간 스크립팅(XSS), 디렉터리와 파일을 무작위로 공격하는 강제 브라우징, 세션 공격, 논리 결함 등은 자동화된 스캐너가 발견하지 못하는 취약점이다.[7]

사용법[편집]

간단 사용법[편집]

  • 빠른 시작에 대상 사이트 URL을 넣어서 실행한다.
  • Sites 탭에 탐색 된 페이지 주소가 나타난다.
  • Alert 탭에 사이트의 취약점 종류와 해당 페이지 정보가 나타난다.[8]

기본 사용법[편집]

  • 브라우저 프록시 설정을 통해 방문하는 사이트의 취약점을 분석한다.
  • 로그인 세션이 필요한 페이지를 설정할 수 있다.
  • 프록시 설정
  1. ZAP Tools에서 Options에 들어가고, Local proxy에서 Port를 8082로 설정한다.
  2. 브라우저와 ZAP의 프록시 설정을 마치면, 브라우저에서 호출되는 모든 URL에 대해 보안 취약점을 분석한다.[8]
  • 로그인 설정
  1. ZAP에서 새로운 세션을 시작한다.
  2. 브라우저에서 로그인 페이지로 이동한 후 로그인을 한다.
  3. 세션을 위해서 컨텍스트를 설정한다.
  4. 대상 사이트를 선택하고 Include in Context에서 1을 선택한다.
  5. 확인 후 닫는다.
  6. 로그인 처리 주소 선택을 한다. Flag as Context > 1:Form-based Auth Login request 선택한다.
  7. Authentication 메뉴에서 유저이름, 비밀번호의 파라미터를 지정한다.
  8. 유저 메뉴에 로그인할 사용자의 정보를 입력한다.
  9. Authentication 메뉴로 돌아가면 파라미터의 값이 변경된 것을 확인할 수 있다.[8]
  • 취약점 스캔
  1. 브라우저에서 가능한 모든 링크를 클릭한다.
  2. ZAP에 사이트 주소들이 수집되고, 수집된 URL을 기준으로 취약점을 스캔한다. Attack > Active Scan all in Scope
  3. 액티브 스캔(Active Scan) 탭이 열리면, 대상 사이트를 선택하고, Start Active Scan 아이콘을 누른다.
  4. Show scan progress details 아이콘을 누르면 현재 진행 상황을 볼 수 있다.[8]
  • 취약점 리포트 : 취약점이 있는 경우, URL 앞에 4단계의 깃발이 표시된다. 깃발이 붉은색일수록 위험한 취약점을 뜻한다. Alerts 탭에 종류별로 취약점과 해당 페이지 목록이 나타난다. 항목 선택 시에 보이는 매개변수와 공격 값, 설명과 해결방법, 참조 사이트 등을 통해서 취약점을 보완한다.[8]

웹 취약점 점검 기준[편집]

정보수집[편집]

  • 백업 파일 공개 : 웹 서버에서 파일 백업을 공개한다. 이것의 해결책은 제한된 URL과 스크립트 또는 파일에 대한 액세스에 적절한 제어 권한을 적용하면 된다.[5]
  • 쿠키 여유 감지기 : 반복된 GET 요청은 매번 다른 쿠키를 삭제한 후 모든 쿠키를 사용하여 세션을 안정화하고, 응답을 원래 기준과 비교한다.[5]
  • 디렉터리 찾아보기 : 디렉터리의 목록을 볼 수 있다. 숨겨진 스크립트가 표시될 수 있고, 백업 소스 파일 등을 포함해 민감한 정보를 읽기 위해 액세스 할 수 있다. 이것의 해결책은 디렉터리 검색을 비활성화하는 것이다.[5]
  • ELMAH 정보 유출 : 오류 로깅 모듈 및 처리기(ELMAH[elmah.axd])HTTP 모듈을 사용할 수 있다. 이 모듈은 귀중한 정보를 유출할 수 있다. 이것의 해결책은 ELMAH가 실제로 필요한지 고려하고, 그렇지 않으면 비활성화한다.[5]
  • 하트블리드 오픈 소스 암호화 라이브러리 취약점: 1.0.1g 이전의 OpenSSL 1.0.1에서 구현된 전송계층보안(TLS)은 패킷을 제대로 처리하지 못해 원격 공격자가 버퍼 오버 읽기를 유발하는 제작된 패킷을 통해 중요한 정보를 가져와 공개할 수 있다. 이것을 해결하기 위해서는 OpenSSL 1.0.1g 이상으로 업데이트하면 된다. 또는 HTTPS 인증서를 재발급하면 된다.[5][9]

주입[편집]

  • 고급 에스큐엘 주입 : 첨부된 페이로드를 이용하여 에스큐엘 주입이 가능하다. 해결책에는 클라이언트 측 유효성 검사가 있더라도 입력을 신뢰하지 않고, 서버의 모든 데이터 확인을 입력하고, 저장 프로시저의 쿼리에 문자열을 연결하지 않는 것이 있다.[5]
  • 버퍼 오버플로우 : 이 오류는 백그라운드 웹 프로세스의 메모리 공간을 덮어서 쓰는 것이 특징이다. IP(Instruction Pointer), BP(Base Pointer) 및 기타 레지스터값을 덮어쓰면 예외가, 세그먼트 오류 및 기타 프로세스 오류가 발생한다. 이러한 오류가 예기치 않은 방식으로 애플리케이션의 실행을 종료한다. 버퍼 오버플로의 해결책은 적절한 리턴 길이 검사를 통해 백그라운드 프로그램을 다시 작성하는 것이다.[5]
  • CRLF 주입 : 이것을 통해 쿠키를 설정을 할 수 있고, 임의의 HTTP 응답 헤더를 설정할 수 있다. 이것의 해결책으로는 제출된 매개 변수를 주의 깊게 입력하고, CRLF를 필터링하여 CRLF를 주입하지 않는 것이다.[5]
  • 교차 사이트 스크립팅 : 공격자가 제공한 코드를 사용자의 브라우저 인스턴스에 반향하는 공격 기술이다. 코드는 일반적으로 HTML/자바스크립트로 작성되지만, 기타 브라우저 지원 기술로 확장될 수 있다. 해결책은 아키텍처 및 디자인이 취약점이 발생하지 않도록 하거나 쉽게 피할 수 있는 구조를 제공하는 검증된 프레임 워크나 라이트버리를 사용하고, 다른 웹 페이지로 출력될 데이터, 특히 외부입력에서 수신된 데이터의 경우 모든 문자에 대해 적절한 인코딩을 사용하는 것이다.[5]
  • 형식 문자열 오류 : 제출된 입력 문자열의 데이터가 응용 프로그램에서 명령으로 평가되면 형식 문자열 오류가 발생한다. 이것을 해결하기 위해 잘못된 문자열을 삭제하여 백그라운드 프로그램을 다시 작성해야한다.[5]
  • 정수 오버플로 오류 : 입력 스트림에서 확인되지 않은 정수가 컴파일된 프로그램 내에서 사용되는 경우 정수 오버플로 오류의 조건이 존재한다. 이것을 해결하려면 오버플로를 방지하고, 0 오류로 나오기 위해 입력되는 정수의 크기를 확인하여 백그라운드 프로그램을 다시 작성해야 한다.[5][9]

기타[편집]

  • 파일에서 데이터를 로드하는 예제 활성 스캔 규칙 : 사용자가 편집할 수 있는 파일에서 문자열을 불러오는 예제 활성 스캔 규칙을 구현한다.[5]
  • 외부 리디렉션 : URL 리디렉터는 요청을 대체 리소스로 전달하기 위해 웹 사이트에서 사용하는 일반적인 기능을 말한다. 다양한 이유로 수행될 수 있고, 이전 위치에서 리소스를 요청하는 사용자의 기능이 중단되는 것을 방지하기 위해 수행된다. URL 리디렉터가 직접적인 보안 취약점을 반드시 나타내는 것은 아니지만, 공격자가 실제 대상이 아닌 다른 사이트로 이동하고 있다고 피해자를 믿게 하여 악용될 수 있다. 이것의 해결책은 엄격하게 사양을 준수하는 허용 가능한 입력 목록을 사용한다. 사양을 준수하지 않는 입력을 거부하거나, 준수하는 것으로 변환한다.[5]
  • 일반 패딩 오라클 : 공격자가 암호화된 문자열에서 패딩을 조작할 수 있어 '패딩 오라클' 취약성을 나타내는 오류 메시지를 생성할 수 있다. 이러한 취약점은 암호화를 부적절하게 사용하고 있는 모든 프레임 워크 또는 응용 프로그램에 영향을 준다. 이것의 해결책은 영향을 받는 소프트웨어를 업데이트하거나, 암호해독을 시도하기 전에 데이터의 유효성을 제대로 검사한다.[5]
  • POST를 위해 GET : 원래는 POST로 관찰된 요청을 GET으로 수락되었다. 이 문제는 보안 취약점을 그 자체로 나타내지는 않지만, 다른 공격을 단순화 할 수 있다. 해결책은 POST가 예상되는 곳에 POST만 허용되고 있는지를 확인하는 것이다.[5]
  • HTTP 전용 사이트 : 사이트는 HTTPS가 아닌 HTTP에서만 제공된다. 해결책은 SSL(https)을 사용하도록 애플리케이션 서버 또는 웹을 구성하는 것이다.[5][9]

비교[편집]

  • 사무라이 WTF(Samurai Web Testing Framework) : 웹 침입 테스트 환경 기능들이 포함된 가상머신이다. 몇 년 전에 개발자의 메일링 리스트 운영이 중지되어 가장 최신인 사무라이 WTF 릴리스 3.2는 2016년에 패키징된 것이다.
  • 칼리 리눅스(Kali Linux) : 리눅스 기반의 침입 테스트 툴박스이다. 보안 분야의 종사자들은 구현한 네이티브 환경에서 평가하는 데 이 도구를 사용한다.
  • 네서스(Nessus) : 취약점 및 구성 평가 도구이다. 전 세계적으로 가장 인기 있는 도구 중 하나이다. 오픈소스 프로젝트로 시작되었지만, 사유 라이센스 기술로 바뀌었다. 홈 네트워크를 대상으로 한 개인 용도일 경우 무료로 사용할 수 있는데, 무료 버전은 최대 16개까지 IP 주소를 스캔할 수 있다.
  • 버프 스위트(Burp Suite) : 웹 앱 보안 테스트 플랫폼이다. 이 도구에는 보안 취약점 검색 및 익스플로잇이 포함되어 있다.[10]

각주[편집]

  1. 1.0 1.1 1.2 1.3 1.4 1.5 1.6 OWASP ZAP - DevOps를 위한 Self웹취약점 점검 도구 소개〉, 《오픈나루》
  2. OWASP ZAP〉, 《위키피디아》
  3. 프록시 서버〉, 《위키백과》
  4. shionista, 〈(ZAP) 웹 프록시 도구 ZAP 간단한 사용방법〉, 《네이버 블로그》, 2019-07-17
  5. 5.00 5.01 5.02 5.03 5.04 5.05 5.06 5.07 5.08 5.09 5.10 5.11 5.12 5.13 5.14 5.15 5.16 OWASP ZAP 공식 홈페이지 - https://www.zaproxy.org/
  6. 하울, 〈ZAP(Zed Attack Proxy)의 4가지 모드(ZAP의 4가지 모드)〉, 《하울》, 2019-04-16
  7. 7.0 7.1 사이테일, 〈웹 애플리케이션 사전조사 및 스캐닝(2) - ZAP(Zed Attack Proxy)〉, 《티스토리》, 2015-04-14
  8. 8.0 8.1 8.2 8.3 8.4 Zed Attack Proxy(ZAP)〉, 《OKdevTV》
  9. 9.0 9.1 9.2 개발자와코더사이, 〈OWASP ZAP 설치 및 시작 법〉, 《티스토리》, 2017-2-09
  10. Peter Sayer, Bill Brenner, 〈2020 최고의 무료 보안 도구 21선〉, 《아이티월드》, 2020-11-10

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 ZAP 문서는 보안에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.