정보보안

    [하드웨어 해킹] 퍼징 기술

    퍼징은 2살짜리 아이에게 장난감이나 공구를 주는 것과 같다. 아이는 가능한 모든 방법으로 주어진 도구를 사용하려고 애쓴다. 퍼저는 여러 입력값을 넣어가며 프로그램을 깨부수고(break) 만다. 변이 기반 퍼징(Mutation-based fuzzing) 유전자 알고리즘(Genetic Algorithms, GAs)은 초기 입력을 주고 변형시키며 최적의 결과를 나타내는 값을 찾아내는 방법이다. 입력값이 더 나아질수록 코드 커버리지는 넓어진다. 원칙적으로 GA 구현과 입력값 생성은 AFL에 의해 자동화된다. 어떤 유전자가 살아남을 것인가를 판단하는 적합도 함수(Fitness Function)를 사용하는 대신 다른 함수(Novelty Function)을 사용해 입력값의 가짓수를 최대로 늘려 코드 커버리지를 향상시..

    [하드웨어 해킹] 퍼징과 분석 기술 - 심볼릭 실행

    퍼징 퍼징(fuzzing)은 가장 효과적으로 소프트웨어를 테스트하는 기술이다. 정의에 따르면 퍼징은 실행 중인 소프트웨어뿐 아니라 소스코드와 컴파일된 코드에도 적용할 수 있다. 하지만 실행 중인 프로그램이 아니라면 정적 분석의 영역이라고 봐야할 것이다. 퍼징과 동적 분석, 정적 분석을 합쳐 concolic testing이라고 할 수 있다. concolic은 concrete와 symbolic을 합친 말로, symbolic한 실행과 concrete 실행을 함께 사용하는 기술을 말한다. 다시 말해 주어진 소스코드를 기반으로 높은 커버리지를 달성하는 테스트 케이스를 자동으로 생성하는 테스팅 기법이다. 프로그램 시맨틱을 해석하는 법 프로그램 시맨틱(semantic)은 어떤 요소를 어떠한 위치에 두면 어떤 의미를 ..

    [하드웨어 해킹] QEMU 실행 모드

    ARM 아키텍처를 사용하기 전 패키지 설치 sudo apt install build-essential sudo apt install gcc-arm-linux-gnueabihf sudo apt install libc6-armhf-cross sudo apt install gdb gdb-multiarch for MIPS ARM 아키텍처를 이용하는 경우 설치하지 않아도 괜찮다. sudo apt install gcc-mips-linux-gnu sudo apt install libc6-mips-cross 플러그인(peda, pwndbg, gef) git clone https://github.com/apogiatzis/gdb-peda-pwndbg-gef git clone 명령으로 파일을 받은 다음 해당 디렉토리로 들..