[Bandit] Level 0 → Level 1 Bandit: https://overthewire.org/wargames/bandit/bandit1.html 1. Level Goal 다음 레벨의 password는 홈 디렉토리에 있는 readme라는 파일에 저장된다 ssh를 사용하여 bandit1에 로그인하려면 해당 password가 필요하다 각 level의 password를 찾을 때마다 ssh(port: 2220)을 사용하여 해당 레벨에 로그인하고 게임을 진행할 수 있다 2. Commands you may need to solve this level ls cd cat file du find 3. 개념 정리 및 풀이 방법 ls 명령어: list의 줄임말로 현재 위치나 특정 경로의 디렉토리 내용의 리스트를 ..
[Bandit] Level 0: Bandit 접속하기 Bandit: https://overthewire.org/wargames/bandit/ 1. Level Goal 목표는 ssh를 사용하여 게임에 접속하는 것이다 host는 bandit.labs.overthewire.org에 연결되어야하며 이때 port는 2220을 사용한다 username은 bandit0로 설정한다 로그인 한 이후에는 level 1로 가기 위한 방법을 찾으면 된다 2. Commands you may need to solve this level ssh 3. 풀이 방법 및 개념 정리 ssh 설치 $ sudo apt update $ sudo apt install openssh-server ssh 서비스 실행 확인 $ sudo systemct..
[AFL fuzzer] AFL fuzzer 원리 Ref. https://wogh8732.tistory.com/272 # AFL 퍼저 원리 afl 퍼저는 instrumentation-guided genetic algorithm과 결합한 퍼저 브루트포스로 입력을 받지만, 거기서 끝나는 것이 아닌 커버리지를 넓혀가며 프로그램 제어 흐름에 대한 변경사항을 기록하고, 이를 로깅하여 유니크한 크래시를 발견해 낼 수 있음 특징 커버리지 기반 퍼저이기 때문에 매우 효율적인 퍼징이 가능함 코드 커버리지 측정을 위한 코드를 컴파일 타임에 삽입함 QEMU를 이용해서 컴파일 타임이 아닌, 런타임 시에 코드 삽입도 가능함 코드: 어디가 실행됐고, 어디가 실행 안됐는지를 측정해주는 코드 코드 삽입: Instrumentation ..
[Fuzzer] What the Fuzz Ref. https://labs.f-secure.com/blog/what-the-fuzz/ # 정의 fuzzing이란 자동화된 소프트웨어 테스팅 기술로써 프로그램 내부에 존재할 수 있는 취약점을 찾아내는 것 단순화된 fuzzing은 브루트포스와 마찬가지로 무작위로 입력 값을 보내는 방식으로 진행할 수 있음 but 발전된 fuzzing techniques 소스코드나 바이너리를 분석하여 입력 값을 생성 # 장점 자동화하여 버그를 찾을 수 있으므로 비용적으로 효율적임 수동 테스트는 분석자의 기술력에 굉장히 의존적 fuzzing을 사용하면 서로 다른 종류의 버그를 찾을 수 있음 + 분석자의 손을 벗어나도 계속해서 분석이 가능하기 때문에 효율적임 # 이슈 fuzzing은 ..
[firmadyne/Firm-AFL] firmadyne & FirmAFL 사용을 위한 지식 본격적으로 Firm-AFL을 사용해보기 전 이와 관련된 지식들을 정리해보고자 한다 1. firmadyne Linux 기반 임베디드 펌웨어의 에뮬레이션 및 동적 분석을 수행하기 위한 확장 가능한 자동화 시스템 구성요소 펌웨어 실행 계측을 위한 수정된 커널 하드웨어 NVRAM 주변기기를 에뮬레이트하기 위한 사용자 공간 다운로드된 펌웨어에서 파일 시스템 및 커널을 추출하는 extractor 디버깅을 위한 추가 셸을 생성하는 작은 console 42개 이상의 다른 공급업체에서 펌웨어를 다운로드하는 scraper firmadyne 시스템을 사용하여 다음 세 가지 기본 자동화 분석 가능 Accessible Webpages: ..
[Firm-AFL] FirmAFL 환경 셋팅 및 오류 해결 IoT 허브 펌웨어를 분석하던 중 Firm-AFL에 대해 알게되어 이와 관련한 환경 셋팅을 하는 과정을 기록해보려 한다 1. 환경 설치 환경은 Ubuntu 18.04이다 2. FirmAFL & firmadyne git clone 받기 github에 FirmAFL을 검색하게 되면 크게 3명의 repository가 나오는데 별이 가장 많은 사람을 기준으로 다운로드했다 GitHub - zyw-200/FirmAFL: FIRM-AFL is the first high-throughput greybox fuzzer for IoT firmware. FIRM-AFL is the first high-throughput greybox fuzzer for IoT fi..
[NOX] 안드로이드(Nox) 버프 스위트(burp suite) 보안 인증서 등록 방법 기존 녹스 앱플레이어를 사용하면 버프 스위트 실행 및 프록시 연결 후 http://burp에 접속하여 인증서를 다운해 실행하면 됐으나 안드로이드 버전 7.0 이상 버전부터 해당 방법을 사용할 때 오류가 나타난다 이는 Android 7 버전 이상부터 사용자 자격증명을 신뢰하지 않기 때문에 시스템 자격증명으로 변경해주어야 하기 때문이다 해당 과정을 거쳐도 설정 → 보안 → 신뢰할 수 있는 자격 증명을 클릭해보았을 때 PortSwigger 인증서를 확인할 수 없다 해당 인증서는 "사용자"가 아닌 "시스템"내에 존재해야하므로 다음과 같은 과정을 통해 인증서를 추가해주어야 한다 [요약] PC에서 버프스위트 인증서를 추출한 후,..
basic_rop_x86 이 문제는 서버에서 작동하고 있는 서비스(basic_rop_x86)의 바이너리와 소스 코드가 주어집니다. Return Oriented Programming 공격 기법을 통해 셸을 획득한 후, “flag” 파일을 읽으세요. “flag” 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다. 플래그의 형식은 DH{…} 입니다. # 문제 분석 - 소스 코드 main 함수에서 read 함수와 write 함수를 사용함 initialize 함수에서 puts 함수를 사용함 → 인자를 하나만 필요로 하기 때문에 이를 활용하여 페이로드를 작성하면 좋을 것 데이터를 읽어들일 수 있는 함수는 read 함수이며, 이를 통해 system 함수의 주소를 구하게 된다면 이미 ROP 페이로드가 ..
basic_rop_x64 이 문제는 서버에서 작동하고 있는 서비스(basic_rop_x64)의 바이너리와 소스 코드가 주어집니다. Return Oriented Programming 공격 기법을 통해 셸을 획득한 후, “flag” 파일을 읽으세요. “flag” 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다. 플래그의 형식은 DH{…} 입니다. # 문제 분석 - 소스 코드 main 함수에서 read 함수와 write 함수를 사용함 둘 중 하나의 GOT를 읽어 libc.so.6가 매핑된 영역의 주소를 구하고, 이를 통해 system 함수의 주소를 얻을 수 있을 것 데이터를 읽어들일 수 있는 함수는 read 함수이며 이를 통해 system 함수의 주소를 구하게 된다면 이미 ROP 페이로드가 ..
out_of_bound 이 문제는 서버에서 작동하고 있는 서비스(out_of_bound)의 바이너리와 소스 코드가 주어집니다. 프로그램의 취약점을 찾고 익스플로잇해 셸을 획득하세요. “flag” 파일을 읽어 워게임 사이트에 인증하면 점수를 획득할 수 있습니다. 플래그의 형식은 DH{…} 입니다. # 문제 분석 - 소스 코드 command에 접근하는 idx에 대한 검증이 없으므로 oob 가능 system 함수는 const char * 인수가 필요하므로 name 배열에서 0번째 인덱스부터 3번째 인덱스까지 "cat flag" 문자열을 저장하고 있는 곳의 주소를 저장한다면 해당 주소를 따라가 system("cat flag")가 출력될 것임 따라서 name[4] 위치부터 "cat flag" 문자열을 저장하고 그..