보안성 테스트 (Security Test)

1. 보안성 테스트 (Security Test)의 개념 및 부특성

(1) 보안성 테스트의 개념

(2) 보안성(Security)의 부특성

부특성설명
기밀성
(Confidentiality)
접근 권한이 있는 사람에게만 데이터에 액세스할 수 있도록 하는 정도
무결성
(Integrity)
컴퓨터 프로그램 또는 데이터에 무단으로 접근/변경되는 것을 방지하는 정도
부인 방지성
(Non-repudiation)
사건 및 행위 후에 부인하지 못하도록 행동 및 사건에 관해 입증할 수 있는 정도
책임성
(Accountability)
각 개인을 유일하게 식별하여 행위를 기록하고 필요 시 그 행위자를 추적할 수 있는 능력
인증성
(Authenticity)
사건 및 행동에 관해 실제 행위자임을 증명할 수 있는 정도
  • 시스템 보안성을 검증하기 위해 주로 침입(침투) 테스트와 소스코드 정적 분석 기법 사용

 

2. 보안성 테스트를 위한 침입 테스트(Penetration Test)

(1) 침입 테스트 유형 및 대상

침입 테스트 유형테스트 대상테스트 방법
애플리케이션
침입 테스트
Web App, 모바일 App, API 등– OWASP Top 10 취약점 검색
– App 고유의 보안 결함 및 취약성 검사
네트워크
침입 테스트
네트워크 연결 자산(서버, 라우터, PC 등)– 외부 테스트: 외부 인터넷 연결 자산 검사
– 내부 테스트: 내부자 모방 취약성 검사
하드웨어
침입 테스트
PC, 모바일/IoT 디바이스, 운영 기술(OT)– 원격 액세스 운영 체제 악용 등 S/W 결함
– 물리적 취약성, 손상된 디바이스 악용
내부 직원
침입 테스트
직원의 사이버 보안 인식, 소셜 엔지니어링– 피싱, 스미싱 기반 중요 정보 유출 검사
– 사무실의 물리적 보안 평가, 테일게이팅

(2) 침입 테스트 프로세스

(3) 침입 테스트 도구 및 기능

침입 테스트 도구주요 기능도구 사례
특수 운영 체제침입 테스트 및 해킹을 위해 설계된 특수 설계된 OS침입 테스트 도구가 사전 설치된 Kali Linux
자격 증명 크래킹 도구암호화 해독, 봇/스크립트 기반 비밀번호 생성 무차별 대입 공격Medusa, Hydra, Hashcat, John hte Ripper
포트 스캐너시스템의 오픈된 포트에 대해 원격 접근 테스트Nmap, masscan, zMap
취약점 스캐너알려진 취약점을 시스템에서 검색, 잠재적 침입 경로 탐색Nessus, Core Impact, Netsparker
패킷 분석기패킷을 캡쳐하여 분석, 트래픽 경로 및 데이터 내용 파악Wireshark, tcpdump
침입 프레임워크제공된 익스플로잇 선택, 사이버 공격 자동화Metasploit
  •  침입 테스트는 침입자의 관점에서 소프트웨어 시스템의 취약성(Vulnerability)을 찾는 테스트로 시스템 안전성 전문가가 수행하여 ISO/IEC 27001 등 정보 보안 표준을 준수

 

3. 보안성 테스트를 위한 소프트웨어 정적 분석 기법

구분평가 항목기준
입력 데이터
검증 표현
디렉토리 경로– 입력값 디렉토리 필터링
스크립트 금지– 업로드 시 특정 확장자 제한
SQL Injection– 입력 값 필터링
XSS 공격 점검– 게시물에 스크립트 제한
서버 통제– HTML, 웹APP 소스 리뷰
보안 기능
포함 여부
접근 제어– 접근 권한 필요 부분 확인
중요 자원 권한– 중요 자원 권한 부여 금지
암호 알고리즘– 최신 암호 알고리즘 사용
중요 정보 전송– 중요 정보 전송 시 암호화
패스워드 저장– 해시암호 등 일방 암호화
취약 패스워드– 비밀번호 조합 규칙 수립
에러 처리메시지 노출– 오류 메시지 코드 외부 노출
오류 상황 대응– 오류 상황 대응 방안 수립
적절한 예외 처리– 의도하지 않는 상황 차단
코드 오류Null 포인터– Null 설정된 변수 주소 참조
부적절 자원 해제– 메모리 자원 등 누수 방지
  • 소스코드를 분석하기 위해 CppCheck, FindBugs 등 정적 분석 도구를 사용하여 CWE-658(C 언어), CWE-659(C++ 언어), CWE-660(JAVA)  등 소스코드 규칙 검사

 

4. 보안성 테스트 위한 정적 분석 도구 및 소스코드 규칙

(1) 정적 분석 도구

분석 언어분석 도구특징
C/C++CppCheck– OpenSource S/W, Windows/Linux 계열 사용
– 배열 인덱스 참조 위반, 생성자 없는 클래스/변수
JAVAFindBugs– 결함 발생 유형 검출, 버그 우선순위로 나누어 표현
– 기본 제공 패턴에서 수정할 버그 필터 설정(XML)
PMD– 선 정의 룰셋 자바 코드 분석, 타 GUI 환경 연동 플러그인
– 기본 룰셋 정의 → 룰 정의 → 룰셋 설정 → 허위 경보 처리

(2) 주요 소스코드 규칙

분석 언어소스코드 규칙주요 규칙
CCWE-658– Stack overflow, Buffer overflow, Null pointer dereference 등
C++CWE-659– Uncaught exception, declaration of catch for generic exception 등
JAVACWE-660– Direct use of unsafe JNI, Public clonable() method without final 등

 

[참고]

  • 한국정보통신기술협회(TTA), 소프트웨어테스트 전문가(CSTS) 가이드
  • IBM, 침투 테스트란

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^