랜덤한 시퀀스를 입력으로 주었을 때 내부에서 해당 시퀀스를 처리함에 있어서 crash를 유발할 수 있는 여러가지 입력을 만들어 내는 테스팅 방법론을 fuzzing이라 한다.
Mutation-based Fuzzing
기존의 올바른 입력을 가지고 작은 변경(mutation)을 반복적으로 가해 새로운 동작이나 오류를 유발하는 입력을 만드는 방식
Fuzzing에서 “오류 근처에 있는 입력”은 취약점과 가까운 경로를 실행하는 입력을 뜻하며,
fuzzer는 이를 통해 진짜 crash를 유도하는 방향으로 진화(mutating)합니다.Greybox Fuzzing
Blackbox Fuzzing + Whitebox Fuzzing으로
약간의 내부 정보만 이용해서 효율적으로 fuzzing을 수행하는 방식
- 구조적 커버리지(structural eoverage) 사용:
- 프로그램의 어떤 코드 경로를 실행했는지를 추적
- 새로운 동작을 유발한 입력만 저장
- 만약 변형된 입력이 이전에 실행하지 않았던 코드 경로를 탐색하면 입력을 새로운 seed로 저장
Coverage-guided Fuzzer (AFL 등)는
이런 의심스러운 경로를 밟은 입력을 새 seed로 채택해서
더 많은 버그를 유도하도록 시도합니다.
항목 설명 입력 변경 방식 기존 입력에 작은 변화 반복 (mutation) 내부 정보 사용 코드 커버리지 (어떤 경로 실행했는지) 입력 채택 조건 새 코드 경로 탐색 시에만 seed로 채택 장점 효율성 + 높은 보안 취약점 탐지율 대표 도구 AFL, libFuzzer 등
Dark web
Dark Web은 인터넷의 일부인데, 일반적인 브라우저(크롬, 사파리 등)로는 접근할 수 없는 영역, 익명성 보장
구분 설명 예시 Deep Web 일반 검색엔진에 노출되지 않는 웹 내 이메일함, 기업 내부 포털, 병원 기록 Dark Web Deep Web 중에서도 일부러 감춰진 영역 .onion도메인, 불법 마켓, 익명 포럼Tor(The Onion Router)
Dart Web에 접속하기 위한 대표적인 도구
- Tor의 기능:
사용자의 IP 주소를 숨김
여러 노드를 거쳐 데이터를 암호화하여 전송 → "양파껍질"처럼 여러 겹으로 보호
개발자도 모르는 소프트웨어의 보안 취약점을 해커가 먼저 발견하고, 이를 악용해 공격하는 것
-> 취약점이 세상에 공개된 지 0일.
APT 공격은 정교하고, 장기적이며, 특정 대상을 노리는 고급 해킹 공격으로 들키지 않고 몰래 오래 침투 하는 것이 핵심
요소 설명 Advanced (고급 기술) 제로데이 취약점, 맞춤형 악성코드, 사회공학 기법 등 고난이도 수법 사용 Persistent (지속성) 한번 침입에 성공하면 수개월 또는 수년간 활동함 (계속 내부를 감시하고 조작) Targeted (표적 공격) 무작위가 아님! 특정 기업, 정부기관, 정치인 등 정해진 목표를 노림
요소 설명 예시 Social Engineering 사람을 속여 공격에 진입 피싱 메일, 사칭 전화 Exfiltration 내부 자료를 외부로 유출 문서, 데이터베이스 탈취
스테가노그래피
"정보가 있다는 것조차 숨기자"
-> 메시지의 존재 자체를 들키지 않도록 감추는 기술
구분 목적 설명 예시 Cryptography (암호학) 내용을 숨김 메시지를 암호화해서 읽지 못하게 만듦 “HELLO” → “XH%3#@” Steganography (정보은닉) 존재를 숨김 메시지 존재 자체를 감춤 이미지 속에 몰래 텍스트 삽입