6. 웹, DB 등 정보시스템 취약점 점검 및 보안대책 수립

Posted by ironmask84
2018. 3. 3. 17:17 컴퓨터공학/Security


* 웹 로그 분석 (서버에 저장되는 로그)
  1) 접속 사용자의 행위/취향 등을 분석
  2) 보안사고 발생 시 추적할 수 있는 증거자료
  3) 보안사고 발생 전 이상 징후, 해킹시도, 해킹 성공 여부를 확인
  4) 다양한 웹 공격 패턴 파악
  5) 접속시간, 접근 파일 정보, 사용자 정보, 요청 방식, 성공여부 등을 확인

* GET, POST 요청 메소드
GET : URI로 지정된 리소스를 서버에 요청
POST : URI로 지정된 리소스에 데이터를 전달하여 이를 처리한 결과를 서버에 요청

* 웹로그 종류
  1) NCSA CLF(common Log Format) : Apache 및 Tomcat의 기본 포맷
  2) NCSA ELF(Extended Log Format) : CLF에 Referer값과 User-Agent값이 포함된 포맷
  3) W3C ELF : Referer와 User-Agent를 비롯한 Cookie 및 사용자 정보를 추가로 남길 수 있는 포맷

* 웹로그 포맷
  0) Host, Date and Time, Request, Status, Bytes
  1) Referer : 요청된 URL이 참조되거나 링크된 URL
  2) User-Agent : 클라이언트 OS 및 브라우져 버젼



일반적으로 기업들이 웹 모의해킹을 수행할 때는 외부 업체를 구하여 수행할 수도 있고 회사 내부 직원들에 의해서 수행할 수도 있습니다. 다만 이러한 모의해킹을 수행할 때는 다양한 기준에 따라서 실시할 수 있습니다. 대표적인 것이 OWASP TOP 10 웹 취약점, 국정원 홈페이지 8대 취약점 등입니다. 다만 모의해킹을 수행할 때는 아이피, 아이디, 접속 일자, 행위와 같은 반드시 들어가야 할 기준을 포함하여 수행이 되어야 합니다. 또한 한국인터넷진흥원(KISA)에서는 홈페이지 취약점 제거 가이드까지 제시하고 있으므로 이런 것들을 잘 참고하는 것이 중요합니다.

※ 한국인터넷진흥원(KISA) 2016년 홈페이지 취약점 진단제거 가이드 ※

https://www.kisa.or.kr/public/laws/laws3_View.jsp?mode=view&p_No=259&b_No=259&d_No=49&ST=T&SV=

  정말 고리타분한 말로 들릴 수 있겠지만 자신이 웹 개발자라면 평소에 이러한 취약점 진단제거 가이드를 읽어보면서 공부해 볼 필요가 있습니다. 또한 회사에서 실제로 모의해킹을 수행할 때도 이러한 가이드를 참조하게 됩니다. 위 문서를 보면 제가 자주 쓰는 CSRF 기법에 대한 대응 방안도 나와있네요.

  재미있네요. 고전적인 해킹 기법은 CSRF의 동작 과정 및 세부적인 내용에 대해서 소개하고 있습니다.

※ 일반적인 웹 모의해킹 점검 절차 ※

① 진단할 기업 정하기: 대상의 개요, 사업의 목적 파악 
② 대상 기업 분석: 진단 대상 사이트 규모, 용도, 주요 기능 목록, 예상 취약점 목록화
③ 정보 수집: 웹 취약점 스캐너 활용, 공격 포인터 이용
④ 취약점 점검 실시: 사이트 별로 기능에 따른 예상 취약점 테스트 실시, DB유출, 정보유출 등 공격시도
⑤ 권한 획득: 웹 서비스 관리자 권한 획득, 웹 쉘을 통한 루트 권한 획득 등

  일반적으로 웹 모의해킹을 통한 점검 절차는 위와 같이 수행됩니다.

※ 웹 취약점 스캐너 ※

- nikto: 취약점을 점검할 때 가장 많이 사용하는 점검 툴
- OWASP Zap: OWASP TOP 10 취약점을 주 대상으로 한 점검 툴
- Acunetix: 상용 웹 스캐너로 가격이 비싼 점검 툴



DB 침해사고는 외부의 해커, 인가된 내부 사용자, 인가되지 않은 내부 사용자 등 모든 범 위에서 발생할 수 있다. DB는 정보시스템의 가장 깊은 곳에서 운영되지만 웹 애플리케이 션(Web Application), 내부망(Internal Network), 파트너 연계 네트워크 등 수 많은 접 근점의 존재로 인해 데이터 유출 위험이나 서비스 중지의 위험이 상시적으로 존재한다.
DB 취약점의 유형은 다음과 같다.
■Admin 권한이 아닌 일반 권한을 가진 DB 계정이 단 하나의 SQL 명령으로 Admin 권 한을 획득 한다면?
■DB 계정이 없는 사용자의 DoS공격에 의해 고객 및 금융 업무를 운영하는 DB가 갑자기 중지된다면?
■DBMS 내부에 DBA도 모르는 내부 함수(Internal Function)로 인해 DB가 손상된다면?
■다른 소유주의 테이블(Table)이 남모르게 접근 가능하다면?
앞의 취약점들은 다음의 대표적인 DB 취약점을 통해 공격받을 수 있다.
■디폴트(Default) 패스워드 및 보안상 안전하지 못한 약한 패스워드
■권한의 남용(모든 권한은 꼭 필요한 최소한의 권한으로 운영되어야 한다.)
■버퍼 오버플로(Buffer overflow)나 형식문자열(Format String)과 같은 알려진 취약 점들
■네트워크를 통한 취약점들
■DB 및 시스템 파일에 대한 불법 열람 및 변조
■SQL 주입공격(Injection )
■DB 서비스를 중단시킬 수 있는 서비스 거부(Denial of Service)와 같은 위협들 문제는 이러한 DB 취약점들이 DBMS 제조사나 해커들에 의해 항상 공개가 된다는 것이 다. 이렇게 공개된 DB 취약점들을 통해 DB는 쉽게 공격 대상으로 주목된다. DB 취약점 분석은 DB에 내재된 취약점들과 DB 운영에 있어서 고려되어야 할 항목들을 다각도에서 구체적으로 점검함으로써 보안 관리자 및 DBA에게 시스템에 내재된 안전 취 약점(Security Hole)을 제거하게 하여 DB의 보안 수준을 향상시키게 한다.
DB 취약점 분석 솔루션은 점검대상 네트워크 범위에 존재하는 정보자산을 파악하는 정보 수집(Information Gathering), DB 보안을 검증할 수 있는 모의해킹(Penetration Test), 내부 보안감사(Security Auditing) 등의 과정을 통해 다양한 DB 취약점들을 도출 하여 DB의 전체 보안 수준의 향상을 도모한다.
DB 취약점 분석은 정보 자산의 파악과 보안성의 검토, 검출된 취약점 제거를 위한 Fix Scripts 및 개선안 제시, 레포팅 등을 주요 항목으로 한다.

결국 DB 취약점(Database Vulnerabilities)은 DB 보안을 위해 반드시 점검해야 할 항목 이라고 할 수 있다.


* 행정안전부에서 내놓은 공개SW를_활용한_소프트웨어_개발보안_점검가이드 에 따르면
Eclipse 나 Android Studio 같은 통합개발환경(IDE) 도구, jenkins와 같은 CI(Continuousintegration) 도구에서
FindBugs, FindSecurityBugs, PMD  툴을 플러그인으로 적용해서 사용이 가능하다.