[ 보안 분야의 다양한 진로 ]
- 기업 망 보안 담당자(대기업, 정부기관, 금융기관 등)
- 제품 보안 담당자
- 보안 컨설턴트
- 디지털 포렌식 전문가
- 보안 솔루션 (개발자, 테스터, 기술지원, 영업 등)
- 버그헌터 및 프리랜서 보안 연구
[ 화이트해커 ]
- 광범위하게는 모든 정보 보안 관련 전문가 구체적으로 실제 해킹 기술을 보유하고 있는 보안전문가
- 모의해킹이나 소스 코드 점검 등의 방법으로 보안 취약점을 찾아 공개하여 보안성을 높임
- 성취감 + 재미 + 수입이 크지만 그만큼 성과를 내지 못한다면 스트레스를 받음
불법 해킹과의 차이는? ▶ 사전 허가 여부
화이트 해커는 공격자가 동일한 관점에서 해킹을 시도하는 것이기 때문에 기술적인 부분에서는 차이가 없다.
다만, 반드시 허가를 받은 후에 진행해야 한다.
[ 보안 취약점 ]
- 정의 : 정보보안의 3요소 중 최소 한가지 영향을 미치는 소프트웨어 버그
- 정보보안의 3요소 : 기밀성, 무결성, 가용성
- 해킹은 보안 취약점을 공격하여 이루어짐
[ 해킹의 기초 단계 ]
[ 웹 보안의 중요성 ]
- 웹이 일상인 시대에 살고 있다.
- 모바일 앱도 웹과 통신한다.
- 웹은 방화벽에 대해서 항상 열려 있다.
- 모의해킹의 관문이다.
- 해외 다수의 버그바운티제도에도 웹이 포함되어 있다.
[ 웹 아키텍쳐 ]
[ HTTP ]
- Hyper Text Transfer Protocol
- 주로 80번 포트를 이용하여 서비스
- HTTP 요청과 HTTP 응답으로 이루어짐
- HTTP 요청 시, HTTP 메소드(GET, POST, PUT, DELETE 등)가 요구 됨
- 클라이언트가 요청하고 서버가 응답
- 응답 코드 (status code) : 에러 메시지 등을 알려줌
[ HTTP 응답 코드 ]
- 1XX : 정보전달
- 2XX : 성공
- 3XX : 리다이렉션
- 4XX : 클라이언트 쪽 에러
- 5XX : 서버 에러
[ 세션 유지와 쿠키 ]
- HTTP는 stateless 이기 때문에 세션 ID를 사용해서 이전 상태를 유지 (예. 한번 로그인 후 다시 물어보지 않음)
- 세션 ID는 보통 쿠키로 전달
- 쿠키란?
▷ 변수 = 값의 집합
▷ 서버는 Set-Cookie 헤더를 이용해 쿠키를 전달하고, 브라우저에서 이를 저장해두었다가 Cookie 헤더에 전송
- 세션 ID를 탈취함으로 세션 하이재킹 공격 가능
ex) 크로스사이트 스크립팅 공격은 세션 ID를 탈취하는 것을 주목적으로 하여 사용자의 정보를 탈취
[ HTTP 프록시와 버프스위트 ]
HTTP 프록시
- HTTP 프록시를 이용하면 HTTP 요청과 응답을 중간에서 가로채는 것이 가능
- 메시지의 내용을 볼 수 있고 수정해서 보내는 것이 가능함
- 웹 해킹이나 웹 보안 취약점을 찾을 때 매우 유용
버프 스위트 (Burp Suite)
실습 화면)
칼리 리눅스 내에 기본적으로 설치 되어 있는 Burp Suite에 들어간다.
Proxy 메뉴에 들어가면 HTTP Proxy 주소와 Port 번호를 알 수 있다.
확인한 Proxy 주소와 포트 번호를 Firefox 설정의 네트워크 설정으로 들어가서 인터넷 프록시 접근 설정을 수동 프록시 설정으로 변경하고 앞서 확인했던 값을 넣어준다.
Burp Suite의 Proxy 메뉴에서 Intercept가 off로 되어 있는 것을 On으로 변경한 후 dvwa에 접속하면 오른쪽과 같은 화면이 표시된다. 이때 forward 버튼을 눌러서 전달하거나 drop 버튼을 눌러서 메시지를 차단할 수 있다.
Target 메뉴에서는 우리가 접속한 호스트들과 URL들을 트리형태로 보여준다
Proxy 탭의 HTTP histroy에는 이전에 접속한 호스트들과 URL주소등의 정보가 표시된다
하나씩 선택해보면 실제로 전송되었던 HTTP 메시지가 자세하게 표시되는 것을 볼 수 있다
Request table)
- GET : HTTP 메소드 (위 사진에서는 /dvwa/login.php 로 메시지를 전송)
- Host : 웹 사이트 주소
- HTTP 헤더 : User-Agent, Accept, Accept-Language, Accept-Encoding이 포함 됨
- Cookie : 가장 중요한 것으로 세션 정보를 포함함. PHPSESSID가 PHP 웹 어플리케이션에서 사용하는 세션 ID가 됨.
Response table)
- HTTP 응답 코드 : 첫째줄의 HTTP/1.1 뒷 부분 숫자가 이에 해당 (+ 300번대 응답 코드는 redirect 의미하고, 200 OK는 요청이 성공적으로 이루어졌음을 의미한다.)
- 그 외에 서버 헤더 등을 통해 추가적인 정보를 얻을 수 있음
* 버프스위트를 사용하지 않을 때 인터넷 (firefox)를 킨다면 인터넷 연결이 원활하지 않을 수 있다. 이때, 설정에서 네트워크를 'No proxy'로 변경해 주면 된다. 변경 후에도 연결이 안된다면 버프스위트에서 Intercept가 켜져있는지 확인하고 켜져있다면 off로 변경하면 된다.