전체 글 171

Background: Computer Architecture

서도 다른 부품들이 모여서 ‘컴퓨터’라는 하나의 기계로서 동작할 수 있는 것은 컴퓨터에 대한 기본 설계가 존재하기 때문이다. 컴퓨터 과학에서는 이러한 설계를 ‘컴퓨터 구조(Computer Architecture)’라고 부른다.전체적인 컴퓨터 구조 중에서 특히 CPU가 사용하는 명령어와 관련된 설계를 명령어 집합구조(Instruction Set Architecture, ISA)라고 하는데, 가장 널리 사용되는 ISA 중 하나가 인텔의 x86-64 아키텍처이다.💡컴퓨터 과학을 배워야 하는 이유리버스 엔지니어링의 기술은 컴퓨터 과학에 뿌리를 두고 있다. 따라서 숙련된 리버스 엔지니어가 되기 위해선 단순히 알려진 기술을 습득하는 것에 그치지 않고 바탕이 되는 컴퓨터 과학을 이해하기 위해 노력해야 한다. 컴퓨터 ..

Reverse Engineering 2023.07.02

Static Analysis vs. Dynamic Analysis

리버스 엔지니어링에서는 소프트웨어를 분석하기 위해 사용하는 분석 방법들을 크게 정적 분석과 동적 분석으로 구분한다. 정적 분석은 외적인 관찰만을 통해 정보를 알아내는 것을 의미하며, 동적 분석은 실행을 통해 동작을 분석하는 것을 의미한다. 정적 분석과 동적 분석 중 한 방법만을 고수하는 것이 아니라 상황에 따라 적절한 방법을 선택하는 것이 리버싱 실력을 좌우하는 중요한 요소이다. 정적 분석 정적 분석은 프로그램을 실행시키지 않고 분석하는 방법이다. 정적 분석의 장점 정적 분석을 사용하면 프로그램의 전체 구조를 파악하기 쉽다. 정적 분석 도구들은 프로그램의 여러 정보를 살펴볼 수 있도록 도움을 주는데, 프로그램이 어떤 함수로 구성됐고 함수들은 서로 어떤 호출 관계를 갖는지, 어떤 API를 사용하고 어떤 문..

Reverse Engineering 2023.07.02

Background: Binary

프로그램 프로그램은 연산 장치가 수행해야 하는 동작을 정의한 일종의 문서이다. 과거에는 프로그램을 애니악(ENIAC) 컴퓨터를 사용하며, 프로그램이 바뀔 때마다 배선을 재배치해야 했으므로 매우 비효율적이었고, 크기가 큰 프로그램을 사용하기도 어려웠다. 이런 단점을 해결한 Stored-Program Computer가 1950년경에 최초로 상용화 되었다. 소프트웨어 개발자, 해커 등 많은 정보 분야의 엔지니어들이 프로그램을 **바이너리(Binary)**라고 부르곤 하는데, 이는 Stored-Program Computer에서 프로그램이 저장 장치에 이진(Binary) 형태로 저장되기 때문이다. 텍스트가 아닌 다른 데이터들도 바이너리라고 불리긴 하지만, 많은 경우에 바이너리라고 하면 프로그램을 의미한다. 컴파일..

Reverse Engineering 2023.07.02

Nmap 옵션 총정리

1. 대상 사양(TARGET SPECIFICATION) 옵션 설명 예시 -iL 스캔할 대상을 파일에서 가져옴 nmap -iL /hagsig/scanlist.txt -iR 지정한 숫자만큼 무작위 대상을 스캔 nmap -iR 50 --exclude 특정 대상을 제외하고 스캔 nmap --exclude 192.168.0.10 --excludefile 제외할 대상을 파일에서 가져옴 nmap --excludefile ./exlist.txt -n Reverse DNS resolution 하지 않음 nmap -n 192.168.1.1 -R 항상 Reverse DNS resolution 수행 nmap -R 192.168.1.1 --resolve-all hostname이 둘 이상의 주소를 가질 경우, 모두 스캔 nmap..

Network Hacking 2023.07.02

ARP Spoofing 실습

ARP 스푸핑 공격 실습 환경 구성 공격자: Kali 리눅스, 피해자 서버: CentOS 7.6, 피해자 클라이언트 : CentOS 6.9 공격 방법 아래와 같이 피해자 서버 PC의 IP와 피해자 클라이언트 IP에게 ARP Reply 공격을 수행 피해자 클라이언트를 대상으로 공격 ( 상태 유지 및 새 창에서 작업) # arpspoof -i eth0 -t [TARGET_IP2] [TARGET_IP] 피해자를 대상으로 공격 (상태 유지 및 새 창에서 작업) #arpspoof -i eth0 -t [TARGET_IP] [TARGET_IP2] 네트워크 연결을 위해 포워딩을 해주는 명령 실행 (편의에 맞게 둘 중 하나의 설정 값 선택) fragrouter를 이용한 IP 포워딩 #fragrouter -B1 fragr..

모의해킹 2023.07.02

근거리 네트워크 위협

근거리 네트워크 내부에서 일어날 수 있는 위협은 외부와 크게 다르지 않지만 OSI 7 Layer 에서 2 계층에 해당하는 Mac 주소 또는 프로토콜을 이용한 공격이 수행되는 것이 특징이다. 근거리 네트워크 공격 종류 ARP를 이용한 MITM 공격 Man In The Middle의 약자로 중간자 공격이라 불림 통신하는 두 단말 사이에 중간자가 침입하여 양단의 통신을 도청하거나 조작 중간자 공격을 막기 위해 TLS/SSL 프로토콜을 이용한 공개 키 기반 인증을 사용 2계층에서 주로 활용하는 공격으로 ARP 스푸핑을 연계한 공격이 존재 STP(Spanning Tree Protocol) 공격 STP는 스위치 네트워크 환경에서 사용되는 프로토콜 루핑(정상적인 연결을 수행하지 못하고 통신이 쳇바퀴처럼 도는 현상) ..

Network Hacking 2023.07.02

네트워크 스캐닝 공격

네트워크 스캐닝 개요 정의 스캐닝은 네트워크를 통해 제공하고 있는 서비스, 포트, Host 정보 등을 알아내는 것을 의미 TCP 기반의 프로토콜의 질의(Request) 응답(Response) 메커니즘 대표적인 스캔 프로그램으로는 nmap이 있음 목적 열려 있는 포트 확인 제공하는 서비스 확인 동작중인 Daemon의 버전 운영체제 종류 및 버전 취약점 → Scanning 시 시용 프로토콜: ICMP, TCP, UDP 풋 프린팅은 시스템의 상세 내용을 확인하기 전 공개되어 있는 정보를 기반으로 특정 사이트의 정보를 조사하는 단계이다. 풋 프린팅은 아래와 같이 단계별로 구분할 수 있다. 활동 범위 결정 회사에 대한 정보: 위치, 네트워크 주소 등 직원에 대한 정보: 연락처, Email 등 협력사에 관한 정보:..

Network Hacking 2023.07.02

basic_rop_x86(Bypass NX & ASLR)

basic_rop_x86(Bypass NX & ASLR) 문제 정보 이 문제는 서버에서 작동하고 있는 서비스(basic_rop_x86)의 바이너리와 소스 코드가 주어집니다. Return Oriented Programming 공격 기법을 통해 셸을 획득한 후, “flag” 파일을 읽으세요. “flag” 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다. 플래그의 형식은 DH{…} 입니다. Environment Ubuntu 16.04 Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8048000) 문제 파일 libc.so.6 basic_rop_x86.c basic_rop_..

basic_rop_x64(Bypass NX & ASLR)

문제 정보 이 문제는 서버에서 작동하고 있는 서비스(basic_rop_x64)의 바이너리와 소스 코드가 주어집니다. Return Oriented Programming 공격 기법을 통해 셸을 획득한 후, “flag” 파일을 읽으세요. “flag” 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다. 플래그의 형식은 DH{…} 입니다. Environment Ubuntu 16.04 Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x400000) 문제 파일 basic_rop_x64.c basic_rop_x64 libc.so.6 풀이 checksec으로 어떤 보호 기법이 적용되어..

rop(Bypass NX & ASLR)

rop(Bypass NX & ASLR) 문제 정보 Exploit Tech: Return Oriented Programming에서 실습하는 문제입니다. 풀이 문제 파일은 다음과 같다. rop.c rop libc-2.27.so Dockerfile checksec으로 rop 바이너리 파일을 확인해 본 결과 CANARY, NX, ASLR의 보호기법이 적용되있는 것을 알 수 있다. rop.c의 코드는 다음과 같다. // Name: rop.c // Compile: gcc -o rop rop.c -fno-PIE -no-pie #include #include int main() { char buf[0x30]; setvbuf(stdin, 0, _IONBF, 0); setvbuf(stdout, 0, _IONBF, 0); ..