보안

    [하드웨어 해킹] 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)한다. 퍼징의 성과를 향상하기 위해..

    [하드웨어 해킹] iptime 공유기 펌웨어 가상화하기

    https://www.hackerschool.org/HardwareHacking/ Index of /HardwareHacking www.hackerschool.org 위에서 제공하는 "공유기 해킹 - ARM exploitation.pdf"을 보고 따라하다 오류가 발생했을 때 해결한 부분을 정리하려고 한다. 처음 시작했을 때 무엇을 목적으로 이걸 진행하고 있는지 몰라서 방향을 잡지 못했다. 우선 위 링크에서 어떤 내용을 진행하는지 간단하게 정리해보자. 100장까지 내용은 "기본 세팅을 진행하고, 펌웨어를 추출한 후 재조립해 가상화하기"라고 할 수 있다. 기본 세팅은 공유기 펌웨어 파일 다운로드 받기 크로스 컴파일러 설치 임베디드 리눅스 커널 zImage 추출 binwalk 설치 qemu 설치 등으로 이루어..

    웹 애플리케이션 정찰 - 서드파티 의존성 식별

    이 글은 "웹 애플리케이션 보안 - 정찰, 공격, 방어 세 단계로 배우는 웹 애플리케이션 보안의 모든 것"을 읽고 공부한 내용을 정리한 글입니다. 서드파티 의존성 식별 웹 앱은 자체 개발 코드만으로 이루어지지 않는다. 다른 사람(서드 파티)이 제공하는 외부 코드도 포함한다. 이러한 서드파티 의존성(모듈 간의 협력)을 유심히 살펴보면 공격 경로로 활용할 수 있다. 클라이언트 측 프레임워크 검출 복잡한 UI를 직접 구축하기보다는 jQuery, Bootstrap 등의 프레임워크를 사용할 때가 많다. SPA 프레임워크 EmberJs, 앵귤러JS, 리액트, 뷰JS 등의 SPA 프레임워크는 저마다 DOM 요소를 관리하는 특별한 구문이 있다. 글로벌 객체를 가지고 있는 경우가 많아 버전을 쉽게 알아낼 수 있다. JS..

    웹 애플리케이션 정찰 - API 분석

    이 글은 "웹 애플리케이션 보안 - 정찰, 공격, 방어 세 단계로 배우는 웹 애플리케이션 보안의 모든 것"을 읽고 공부한 내용을 정리한 글입니다. API 분석 웹 애플리케이션의 구조를 탐색할 때, 다시 말해 맵을 만들 때 서브도메인 탐색에 이어 두 번째로 수행해야 하는 단계는 API 찾기이다. 네트워크에 API가 노출되는 이유를 이해하면 API가 어떤 목적으로 사용되는지 파악할 수 있다. 엔드포인트 탐색 오늘날 웹 앱은 대부분 REST API 구조를 따른다. 개발자 도구를 사용해 네트워크 요청을 분석하면 API가 어떤 방식으로 설계되었는지 파악할 수 있다. REST API는 다음과 같은 특징이 있다. 요청 URL은 리소스를 나타내고 URI 경로 구분 기호('/')를 사용하여 리소스를 구성한다. URL 마..

    웹 애플리케이션 정찰 - 서브도메인 찾기

    이 글은 "웹 애플리케이션 보안 - 정찰, 공격, 방어 세 단계로 배우는 웹 애플리케이션 보안의 모든 것"을 읽고 공부한 내용을 정리한 글입니다. 서브도메인 찾기 API 엔드 포인트를 테스트하기 이전에 도메인 구조에 익숙해져야 한다. 웹 애플리케이션은 단일 도메인으로 서비스하지 않는다. 서브도메인을 찾아내 기록하는 것은 웹 애플리케이션 정찰의 첫 단계이다. 우리가 궁금한 것은, "도메인이 인터넷에 연결되어 있을텐데, 이 인터넷에 액세스할 수 있는 다른 서버도 갖고 있는가?"이다. 그러므로 서브도메인 탐색을 통해 아직 방어가 덜 된 쉬운 타깃을 찾는다. API와 end point API(Application Programming Interface)는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙..