분류 전체보기
[하드웨어 해킹] 퍼징과 분석 기술 - 심볼릭 실행
퍼징 퍼징(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 명령으로 파일을 받은 다음 해당 디렉토리로 들..
[하드웨어 해킹] QEMU
에뮬레이션으로 IOT 기기에 접근하기 얼마 전까지 에뮬레이션(emulation)은 교훈적(didactic) 목적이나 MAME(Multiple Arcade Machine Emulator)같은 비디오 게임 목적으로 사용되었다. 최근에는 풀 시스템(full system) 에뮬레이션을 통해 분석이나 취약점 연구 목적으로 사용된다. IoT와 임베디드 기기의 등장은 Avatar, Avatar2, PANDA 등의 툴 개발을 촉진했다. 파이썬 코드 기반인 덕에 새 프로젝트를 시작하고, 중단점을 제어하는 일련의 일을 매우 쉽게 해낼 수 있게 되었다. 사이버시큐리티에서 에뮬레이션을 도구로 활용하는 또다른 중요한 이유는 현대 프로그램이 난독화(obfuscation), 스톨링 코드(stalling code: 악성 코드의 실행..
[하드웨어 해킹] 에뮬레이션(emulation)이란?
에뮬레이션(emulation) 에뮬레이션은 호스트(host)라고 하는 시스템에서 지원하지 않는 소프트웨어, 즉 게스트(guest)를 실행하기 위해 에뮬레이터(emulator)라는 서포트 프로그램을 이용하는 방법이다. 이 때 원본 코드를 호스트에 맞게 번역(traslate)해야 하고, 적절한 주변기기(peripheral), 타이머(timer), 가속기(accelerator), 센서(sensor) 역시 맞춰야 한다. 에뮬레이션은 기기(device)나 기기를 구매할 비용이 부족할 때 큰 도움이 된다. 에뮬레이션과 보안 에뮬레이션은 스위스 군용 칼처럼 보안과 취약점 분석에 있어서 아주 강력한 도구이다. 기기를 직접 보유하기 않고도 가상화된 시스템에서 시스템 함수와 시스템 콜을 실행해보거나, 악성 소프트웨어를 실..
퍼징(fuzzing) 환경 구축하기
"fuzzing against machine" 도서를 읽고 정리한 내용입니다. 퍼징의 기본 개념 QEMU(Quick Emulator)를 사용하는 이유는, 펌웨어를 가지고 에뮬레이팅하면 실제로 기기를 가지고 있지 않아도 테스트할 수 있기 때문이다. 플레이스테이션이나 닌텐도 등 비싼 기기를 보유하지 않아도 에뮬레이터를 통해 PC에서 동작할 수 있는 것처럼 말이다. 취약점에는 버퍼 오버플로우, 포맷 스트링 취약점, 힙 오버플로우 등이 있다. 이러한 취약점을 발견하는 과정은 매우 지루(tedious)한 과정이다. 그래서 퍼저(fuzzer)라는 툴을 이용한다. 퍼저는 프로그램을 실행하고, 다른 입력값(input)을 넣으면서 프로그램의 충돌(crash)을 관찰(monitoring)한다. 퍼징의 성과를 향상하기 위해..
버추얼박스 우분투에서 응용 프로그램 그래픽이 깨질 때 해결 방법
버추얼박스에서 우분투 22.04 버전을 돌리면서 IDA를 설치하려고 run 파일을 실행시켰는데, 글자를 포함한 모든 그래픽이 깨져서 나오는 현상이 일어났다. gpart 등 다른 애플리케이션을 실행해도 마찬가지였다. 기본으로 제공하는 디스크 관리자 등 프로그램은 문제가 없는데, 추가로 설치한 프로그램에서만 문제가 발생했다. 원인은 '그래픽 가속'에 있었다. 문제가 발생한 머신의 설정 탭에서 디스플레이 - Extended Features: 3차원 가속 사용하기를 체크 해제하면 문제가 해결된다. 다시 우분투를 켜고 프로그램을 실행하면 정상적으로 동작한다.
[하드웨어 해킹] iptime 공유기 펌웨어 가상화하기
https://www.hackerschool.org/HardwareHacking/ Index of /HardwareHacking www.hackerschool.org 위에서 제공하는 "공유기 해킹 - ARM exploitation.pdf"을 보고 따라하다 오류가 발생했을 때 해결한 부분을 정리하려고 한다. 처음 시작했을 때 무엇을 목적으로 이걸 진행하고 있는지 몰라서 방향을 잡지 못했다. 우선 위 링크에서 어떤 내용을 진행하는지 간단하게 정리해보자. 100장까지 내용은 "기본 세팅을 진행하고, 펌웨어를 추출한 후 재조립해 가상화하기"라고 할 수 있다. 기본 세팅은 공유기 펌웨어 파일 다운로드 받기 크로스 컴파일러 설치 임베디드 리눅스 커널 zImage 추출 binwalk 설치 qemu 설치 등으로 이루어..
2023년 11월 산업보안관리사 합격 후기
2학년이라 덜 바쁠 때 자격증이라도 따둬야 겠다 하고 응시하게 된 산업보안관리사. 전공 수업에서도 관련 법이나 컨설팅을 강의하시는 교수님들이 지금 객관식일 때 빨리 따두는 편이 좋을 것이라고 자주 말씀하신다. 산업보안관리사 시험은 매년 5월과 11월에 열리므로, 대학생 입장에서는 늘 시험기간과 겹칠 수밖에 없다. 그래서 그런지 다른 블로그 후기글을 봐도 이것저것 일정이 겹쳐서 길어야 일주일 정도밖에 준비하지 못했다는 후기가 많다. 공부 기간 & 돌려본 횟수 나는 11월 시험 응시를 위해 9월 초에 교재를 구매했고, 9월 한 달 동안 교재를 천천히 1회독 했다. 그리고 10월에 중간고사 공부를 하면서 평일에 한 시간 정도 계속 읽었다. 중간고사가 끝나고 시험이 닥친 11월 초에는 하루종일 쳐다봤다. 그래도..