소프트웨어를 개발하다 보면 에러나 개발자의 실수 등으로 인해 시스템에 오류가 생긴다.
테스트 종류
unit
각 컴포넌트, 함수 별로 테스트
integration
인풋, 아웃풋 값에 집중, 컴포넌트끼리 서로 잘 어우러지는지 관측
validation
요구사항 검증
system
소프트웨어와 다른 시스템 구성요소들을 전체적으로 테스트
White-box testing
소프트웨어 내 코드에 접근하기 쉬운 상황에 쓴다. 소프트웨어의 세부 동작을 잘 알고 있을 때 사용하기 좋다.
Black-box testing
내부 구조를 잘 모르거나 소프트웨어의 코드 구조를 잘 모를 떼 사용한다. 입출력 내용에 의존하므로 둘 사이의 관계는 유추에 맡겨야 해서 비효율적인 때가 있다.
기존 값을 모호하게 만들어서 감추는 방법이다. 랜덤한 입력으로 시스템의 보안 수준을 확인한다.
mutation based fuzzing
처음에는 유효성이 검증된 인풋으로 시작해서 기존 입력값에 약간의 변화를 줘가며 결과를 지켜보는 방식이다.
gray-box fuzzing
소프트웨어의 fuzzing coverage를 보면서 블랙박스 테스트의 기법을 활용하는 방식이다.
존재하는 입력값에 약간의 변화를 주면서 테스트한다는 점은 뮤테이션 기반과 같지만, 입력값이 새로운 이벤트를 발견했을 때만 새로운 시드값으로 활용한다.
보통 보안 취약점을 발견하는 데 효과적이다.
malicious software의 줄임말. 악의적으로 행동하기 위한 소프트웨어를 말한다.
검색 엔진으로 찾을 수 없는 인터넷의 부분을 말한다.
이 중 의도적으로 감추어진 사이트를 Dark Web 이라고 부른다.
TOR(The Onion Router)
클라이언트와 목표점 사이에 tor 네트워크를 두고 내부의 라우터들 간에 비밀 키를 생성한다. 비밀 키를 이용해서 전송할 패킷을 여러 단계로 감싸며 실제로 목적지에 패킷이 도착했을 때는 전송자의 정보를 알기 어려워진다.
시스템의 취약점이 개발자나 보안 커뮤니티에 아직 알려지지 않은 상태에서 공격자가 최초로 발견해 공격하는 것을 말한다.
common vulnerabilities and exposures 의 줄임말이다.
사이버보안의 여러 취약점을 기록하고 검색할 수 있는 시스템이다.
advanced persistent threat 의 줄임말로 다음과 같은 특성을 가진다.
즉, APT란 하나의 공격 방식이 아니라 특정한 목적을 달성하기 위해 지속적으로 여러 방법을 오가며 시도하는 공격을 뜻한다.
중요한 정보가 포함된 이미지를 데이터가 포함되지 않은 것처럼 감추는 기법이다.
모니터링이나 권한 없는 유저의 접근을 피할 수 있으며, 이미지 내에 랜섬웨어 등을 삽입해서 공격에 이용한다.