본문 바로가기

서버운영 (TA, ADMIN)/정보보안

[정보보안] 웹해킹의 기초

백엔드 프로그래밍에서 중요한 부분을 꼽자면, 보안처리도 매우 중요합니다. 보안을 알려면, 결국 해킹을 알아야해서, 오늘 포스팅은 웹해킹에 대한 포스팅입니다. 보안 코딩시 훨씬 이해가 수월하겠죠. 공격에 필요한 업무는 다음 네 가지 단계로 구분됩니다.


1. 사전 조사

2. 취약점 스캐닝

3. 공격하기

4. 문제점 고치기


이러한 취약점과 공격 방법을 완화시키는 방법을 검토하여 문제점을 고치는 단계에서의 해결이 필요합니다. 모의해킹을 하거나 윤리적인 공격을 할 때에도 알려진 취약점을 어떻게 해결할 것인가에 관한 의문을 갖게 될 것입니다. 문제점을 고치는 단계에서 해당 질문에 대한 답이 내려집니다.



* 해킹의 목표로 하는 것들


서로 연관있는 세 가지 공격 벡터로 웹 서버, 웹 애플리케이션, 웹 사용자를 목표로 합니다.

각각의 공격 벡터는 다음과 같습니다.


1. 웹 서버

웹 애플리케이션을 호스팅하며 운영체제 위에서 동작하는 응용프로그램입니다. 전통적인 관점의 컴퓨터 하드웨어가 아니라, 사용자의 인터넷 브라우저와 서로 소통하기 위하여 포트를 열어두고 동작하는 서비스를 말합니다. 웹 서버는 네트워크를 해킹해서 허가 없이 웹 서버의 파일 구조나 시스템 파일에 접근하려는 공격에 취약할 수 있습니다.


2. 웹 애플리케이션

웹 서버에서 웹 사용자와 상호작용하기 위해 실질적으로 돌아가는 프로그램으로, 웹 해커가 가장 좋아하는 목표입니다. 웹 애플리케이션은 권한 없이 무언가 하려는 방대한 공격의 영향을 받습니다.


3. 웹 사용자

웹 애플리케이션을 관리하는 (관리자나 프로그래머 등) 내부 사용자와 (사람 클라이언트나 고객 같은) 웹 애플리케이션의 외부 사용자를 상대로 공격할 가치가 있습니다. 웹 애플리케이션에서 XSS나 CSRF 취약점이 고개를 드는 지점이기도 합니다. 현존하는 웹 애플리케이션의 취약점에 의존하는 게 아니라, 웹 사용자를 목표로 삼아 기술적인 사회공학적 해킹을 하는 경우가 여기에 포함됩니다.


각 목표별로 각가의 취약점을 찾고, 공격하고, 페이로드를 남겨두는 제 각각의 공격법이 있으며, 각각의 목표에 대한 고유의 도구와 기법이 요구됩니다.



* 웹해킹 도구


웹해킹을 처음 시작하는 사람이 적용하기 도구로 이런 도구를 추천하는 이유는 초보자가 사용하기 쉽기도 하지만, 사실상 대개의 침투 테스트 전문가가 일상적으로 사용하는 중요한 도구이기 때문입니다. 초기에 이런 도구 사용법을 익힌다면 놀라운 효과를 볼 수 있습니다.


1. Burp Suite웹 해킹 도구들 중 최고이므로 모든 웹 해커가 반드시 가져야 할 필수품이고, 웹 해킹 도구 중 가장 중요한 것으로 널리 여겨집니다.


2. Zed Attack Proxy(ZAP)는 Burp Suite와 비슷한데, 웹 애플리케이션에 적용할 수 있는 무료 취약점 스캐너를 포함하고 있습니다.


3.Nmap 포트 스캐너, Nessus와 Nikto 취약점 스캐너, 웹서버를 공격하는 Metasploit이 있습니다.


4. 그외의 도구들로는 SQL 주입공격을 하는 sqlmap, 오프라인으로 패스워드를 깨는 John the Ripper(JtR) 그리고 웹 사용자를 대상으로 기술적인 사회공학적 공격을 하는 Social Engineering Toolit(SET)과 같이 특정한 목적을 채워주는 다른 도구들도 있습니다.



* IT의 모든 부분과 관련된 웹 애플리케이션


웹 애플리케이션은 회사의 기반구조에 있는 사실상의 모든 중요 시스템과 상호작용합니다. 웹 애플리케이션을 회사에 심각한 내부 피해를 줄 수 없는 DMZ 바깥에 안전하게 처박아놓은 웹 서버에서 돌아가는 코드로 생각하기 쉽습니다. 하지만 어떤 시스템을 완전하게 공격하기 위해서는 전통적은 IT 기반구조가 다루는 영역 이외에 추가로 고민해야 하는 부분이 있는데, 웹 애플리케이션이 미치는 영역은 프로그래머가 작성한 코드보다 훨씬 더 넓기 때문입니다. 그렇기 때문에 다음의 요소들 역시 공격 벡터로 고려되어야 합니다.


1. 데이터베이스 서버와 데이터베이스

웹 애플리케이션이 사용하는 데이터베이스를 호스팅하는 시스템은 민감한 데이터를 만들고(Create), 읽고(Read), 갱신하고(Update), 지우는(Delete) 이른바 CRUD를 허용하도록 하는 공격에 취약할 수 있습니다.


2. 파일 서버

웹 서버의 파일 올리기와 또는 내려받기 기능을 갖고 있는 시스템, 또는 웹서버에 할당된 드라이브는 권한 없는 공격자가 서버 자원에 접근하려는 공격에 취약합니다.


3. 제 3자 요소, 기존 요소들

폭넓게 채택되었을 뿐만 아니라 이미 공개적으로 문서화된 내용 관리 시스템(Content Management System, CMSs) 같은 모듈은 확실한 공격 목표가 되곤 합니다.



* 침투테스트 방법론


오픈소스 보안 테스트 방법론 매뉴얼

오픈소스 보안 테스트 방법론 매뉴얼(Open-Source Security Testing Methodology Manual, OSSTM)은 전문가에 의한 평가 프로세스로, 다음의 다섯 가지 부문을 평가하도록 만들어졌습니다.


1. 정보와 데이터 제어

2. 직원의 보안 자각 수준

3. 사기나 사회공학 수준

4. 컴퓨터와 원격통신 네트워크, 무선 및 휴대장치

5. 물리적 접근 제어, 보안 절차와 물리적 장소


OSSTM은 이러한 각 영역의 기술적 세부사항을 측정하고, 보안 평가의 이전과 도중은 물론 이후에 수행해야할 지침을 제공합니다. ( http://www.isecom.org/research/osstmm.html )