퍼징❓
퍼징(Public Fuzzing)은 소프트웨어 또는 시스템의 보안 취약점을 찾기 위해 사용되는 자동화된 테스트 기법이며 임의의 입력 데이터를 대상 프로그램에 주입하여 예상치 못한 동작이나 오류를 발생시키는 것을 목표로 한다.
퍼징은 보안 취약점, 특히 버퍼 오버플로우, 메모리 누수, 입력 유효성 검사 부재 등과 같은 프로그램의 결함을 찾는 데에 자주 활용된다. 대규모의 입력 데이터 세트(퍼즈 케이스)를 생성하여 프로그램에 연속적으로 적용하고, 예상치 못한 결과가 발생할 때마다 이를 기록하고 분석한다.
퍼징은 보안 전문가나 소프트웨어 개발자들이 소프트웨어의 안정성과 보안을 향상시키기 위해 사용하는 중요한 도구이며 취약점을 찾아내고 수정함으로써 시스템의 안전성을 향상시키고, 악용될 수 있는 취약점을 사전에 발견하여 보안 위협을 방지하는 데에 도움을 준다.
간단한 코드 예시
import random
def fuzz(target_program):
while True:
# 임의의 입력 데이터 생성
input_data = bytearray(random.getrandbits(8) for _ in range(100))
# 대상 프로그램에 입력 데이터 주입
target_program.process_input(input_data)
# 예상치 못한 동작이나 오류가 발생하는지 확인
if target_program.crashed():
# 오류가 발생하면 입력 데이터 저장 및 분석
save_input(input_data)
위의 코드에서 `fuzz` 함수는 대상 프로그램에 임의의 입력 데이터를 주입하고, 예상치 못한 동작이나 오류가 발생하면 해당 입력 데이터를 저장하는 역할을 하며 이는 퍼징의 기본적인 동작 방식을 보여주는 간단한 예시이다. 실제로 퍼징을 수행할 때에는 더 다양한 퍼징 전략과 입력 데이터 생성 방법을 사용하게 된다.
참고로, 실제 퍼징 도구들은 이 예시보다 훨씬 복잡하고 다양한 기능을 제공하며, 다양한 보안 취약점을 찾기 위한 다양한 테스트 케이스를 생성한다.
'Attack' 카테고리의 다른 글
타인의 PC를 정복하다 - 백도어 (루트킷) 개념 및 실습 (0) | 2023.11.22 |
---|---|
파일 업로드 대응 -- (파일 내용 악성 코드 및 여러가지 대응 방법) (0) | 2023.10.21 |
Kali 한영 설정 fcitx 안될 때!! (0) | 2023.10.13 |
[Attack] Web shell? 웹 쉘 ? (0) | 2023.09.14 |
[CRLF 인젝션] (0) | 2023.06.05 |