Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ansvif — 그다지 똑똑하지 않은 퍼저: C/C++ 코드에서 취약점을 찾기 위해 설계된 고급 퍼징 프레임워크. | Kitploit
도구/GitHubGitHub/oxagast/ansvif
Vulnerability AnalysisExploitationFuzzingPenetration TestingBinary Analysis
GitHuboxagast/ansvif

ansvif

그다지 똑똑하지 않은 퍼저: C/C++ 코드에서 취약점을 찾기 위해 설계된 고급 퍼징 프레임워크.

저장소 보기
105265년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

ansvif

별로 똑똑하지 않은 퍼저

Marshall Whittaker

oxagast

[email protected]

시스템의 복잡성이 증가함에 따라, 그 시스템 내에서 문제가 발생할 가능성도 증가합니다.

--Whittaker의 법칙

컴파일 종속성:

automake autoconf-archive zlib1g-dev g++ gcc (GTK 지원을 원한다면 libgtk2.0-dev도 필요)

컴파일:

리눅스:

root@kitploit:~
$ aclocal && autoconf && automake -a && ./configure && make && make check

또는 시스템 콜 퍼저를 사용해보고 싶다면:

root@kitploit:~
$ aclocal && autoconf && automake -a && ./configure --enable-syscalls && make && make check

GTK 프론트엔드를 비활성화하려면 다음과 같이 할 수 있습니다:

root@kitploit:~
$ aclocal && autoconf && automake -a && ./configure --disable-gtk && make && make check

FreeBSD

포트에서 g++를 설치했다고 가정합니다 (C++11을 위해 필요합니다):

root@kitploit:~
$ aclocal && autoconf && automake -a && ./configure && make && make check

OpenBSD:

포트에서 g++를 설치했다고 가정합니다 (C++11을 위해 필요합니다):

root@kitploit:~
$ CXX=$(find / -name 'eg++' 2>/dev/null | grep ports | head -n 1) AUTOCONF_VERSION=2.69 AUTOMAKE_VERSION=1.15 autoreconf -fmi

Windows:

Windows 바이너리는 이제 MinGW-W64로 컴파일되도록 설계되었습니다 (스레딩을 사용하므로 seh가 포함된 MinGW-W64 g++ 버전을 다운로드하세요). 포함된 make_win.bat 스크립트를 클릭하여 MinGW-W64 g++ (seh 지원)를 설치한 후 컴파일을 시도할 수 있습니다. 실패할 경우 환경 설정 문제일 가능성이 높으므로 아래 방법을 시도해보세요.

(MinGW-W64를 설치한 위치로 이동하여 mingw-64.bat를 클릭하세요)

root@kitploit:~
windres metadata.rc -O coff -o metadata.res
g++.exe src/common.cpp src/bin2hex.cpp src/popen2.cpp src/main.cpp src/help.cpp src/match_fault.cpp src/sys_string.cpp src/man_read.cpp src/randomizer.cpp src/trash.cpp src/log.cpp metadata.res src/version.h -I./ -I./include -std=c++11 -lstdc++ -lpthread -O2 -o ansvif.exe -static -static-libgcc -static-libstdc++
gcc src/win/printf.c -o printf.exe

참고: 이제 MinGW의 g++로 컴파일하므로 cygwin .dll 외부 파일이 더 이상 필요하지 않습니다. Windows 7에는 PowerShell v2가 기본 설치되어 있지만, 이 프로그램은 최소 PowerShell v5가 필요합니다. Windows 10에는 PowerShell v5가 포함되어 있습니다. Microsoft 사이트에서 Windows Management Framework(최신 버전의 PowerShell 포함)를 다운로드할 수 있습니다:

https://www.microsoft.com/en-us/download/details.aspx?id=50395

테스트:

예제 코드를 사용해보려면 faulty.c를 다음과 같이 컴파일하세요:

root@kitploit:~
$ gcc faulty.c -o faulty

make check를 실행할 수도 있습니다.

사용법:

중요: Windows 사용자는 ansvif.exe가 작동하려면 PowerShell에서 실행해야 합니다!

root@kitploit:~
$ ./find_suid /usr/bin/ /bin/ /sbin/
$ ./ansvif -[tm] [템플릿/맨페이지] -c /실행파일/경로 -b 버퍼크기

예제:

리눅스/BSD:

root@kitploit:~
$ ulimit -c unlimited
$ ./ansvif -m mount -c /bin/mount -e examples/mount_e.txt -x examples/mount_o.txt\
-f 8 -b 2048
$ ./ansvif -t examples/blank.txt -F tmp/tmphtml -x examples/htmltags.txt -c /usr/bin/iceweasel -b\
128 -A "file:///home/username/src/ansvif/tmp/tmphtml"  -f 2 -n -R "sleep 3 && killall\
iceweasel" -S ">"
$ cat examples/linux_syscalls_implemented.list | xargs -P \
`cat examples/linux_syscalls_implemented.list | wc -l` -I {calls} ./ansvif -t examples/space.txt \
-B "{calls} " -c ./syscalls -o syscall_crash -f 1 -z -d -b 16

Windows:

root@kitploit:~
PS C:\ansvif\bin\ansvif_win> .\ansvif -t ..\..\examples\space -F ..\..\tmp\tmphtml -x `
..\..\examples\htmltags -c `
'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe' `
-b 128 -A "file:///C:\\Users\marsh\OneDrive\Documents\Code\ansvif\tmp\tmphtml" `
-f 2 -n -S ">" -R "sleep 2 ; Stop-Process -Name chrome"

옵션:

ansvif

root@kitploit:~
  -t 이 파일에는 예제 파일과 같이 명령줄 인수가 한 줄에 하나씩 들어 있어야 합니다.
  -e 이 파일에는 예제 파일과 같이 환경 변수가 한 줄에 하나씩 들어 있어야 합니다.
     보통 다음과 같이 얻을 수 있습니다:
     $ strings /bin/mount | perl -ne 'print if /[A-Z]=$/' > mount_envs
  -c 명령 경로를 지정합니다.
  -p 맨페이지 위치를 정수로 지정합니다 (보통 1 또는 8).
  -m 명령의 맨페이지를 지정합니다.
  -D 맨페이지에서 찾은 내용을 덤프합니다.
  -f 사용할 스레드 수입니다. 기본값은 2입니다.
  -b 퍼징에 사용할 버퍼 크기를 지정합니다. 256-2048이면 보통 충분합니다.
  -r 임의의 쓰레기 데이터만 사용합니다.
  -o 출력을 로그 파일에 씁니다.
  -z 버퍼 크기를 1에서 -b로 지정된 값 사이에서 무작위화합니다.
  -x 넣을 기타 잡동사니입니다. 사용자 이름 등을 여기에 넣을 수 있습니다.
  -S 옵션 간의 구분자입니다.
  -s 생략할 문자 지정입니다. 기본값은 <>\\n |&\[]\()\{}:;이며 개행은 필수입니다.
  -T 스레드 타임아웃입니다.
  -W 스레드 타임아웃입니다.
  -L 루트로 실행 중일 때 사용할 권한 없는 사용자입니다.
  -A 실행할 명령 뒤에 항상 이것을 붙입니다.
  -B 실행할 명령 앞에 항상 이것을 붙입니다.
  -F -x와 일반 퍼징 데이터가 들어갈 프로그램에 제공할 파일입니다.
  -n 퍼징에 임의 데이터를 절대 사용하지 않습니다.
  -N -R "pkill prog"의 약자입니다.
  -R 각 퍼징 후 이 명령을 실행합니다.
  -C 감지할 비표준 오류 코드입니다.
  -V 설치된 경우 Valgrind를 사용합니다.
  -1 한 번만 오류를 발생시키도록 시도하고, 실패하면 오류 코드 64를 반환합니다. 스크립팅에 유용합니다.
  -P 퍼징에서 바이너리를 %로 나타냅니다.
  -M 퍼징에 사용할 최대 인수 개수입니다.
  -y -b 0의 약자이며 보통 -A 또는 -B와 함께만 유용합니다.
  -K 대상에서 충돌이 발생한 후에도 퍼징을 계속합니다.
  -E 퍼징 프로그램 전에 실행할 명령입니다.
  -0 퍼징에 NULL 문자를 포함하지 않습니다.
  -v 자세한 출력.
  -d 디버그 데이터.
  -h 도움말 페이지를 표시합니다.
  -i 버전 정보를 출력합니다.
  -W 스레드 타임아웃입니다.

ansvif_gtk

root@kitploit:~
  -l -p ./ansvif의 단축키입니다.
  -p ansvif 바이너리의 위치입니다.

권장 사항: 긴 퍼징이나 파일 퍼징을 할 경우, 가능하면 파일(가능하다면 퍼징 대상 바이너리 포함)을 메모리에 두는 것이 좋습니다. 즉, 디스크 스래싱이 최소화될 /var/run/shm 같은 곳에 두면, 특히 대용량 파일을 처리할 때 퍼징 속도가 다소 빨라집니다. 단, 파일이 shm에 있으면 기계를 재부팅할 때 퍼징된 파일이 사라지므로 주의하세요!

프로덕션 환경에서 이 코드를 실행하지 마세요! 만약 faulty.c의 출력을 suid(0)로 설정하려 한다면, 반드시 가상 머신에서 하거나, 최소한 신경 쓰지 않는 머신에서 하세요. 그 외에는 그냥 이것저것 시도해보고 재미를 느껴보세요!

참고:

Windows 사용자는 ansvif를 PowerShell에서 실행해야 합니다. 리눅스 및 Windows 코드는 비교적 안정적이어야 합니다. 리눅스에서의 시스템 콜 퍼징은 활발히 개발 중입니다.

감사의 말

시스템 콜 퍼징 아이디어를 주신 dll999님께 감사드립니다. 위키 작성에 대한 몇 가지 권장 사항을 주신 2600net #2600 채널의 moo님께 감사드립니다. IRC와 StackOverflow에서 수많은 사람들에게 감사드립니다. Makefile의 버그를 수정해주신 DarkSt0rm님께 감사드립니다.

도구 다운로드