해킹대회(CTF) 출전을 위한 시스템해킹(Pwnable) 입문
시스템해킹 이해하기
해킹 : 권한이 없는 행위를 하는 것. 개발자가 의도하지 않은 프로그램의 동작을 유발하는 것.
시스템 장악 = 쉘(실행하고 싶은 프로그램을 실행시켜주는 프로그램)을 실행했다.
시스템 : pc 그 자체로 os를 기반으로 하드웨어를 통제할 수 있는 소프트웨어적 환경
시스템 해킹의 목표는 이 쉘을 실행하는 것이다
포너블의 문제상황 이해하기
- 프로그램은 반드시 인터넷과 연결되어있음 -> 공격자가 “남의 컴퓨터”에 다가갈 수 있다.
- 인터넷 어딘가에 위치한 외부 즉 remote환경에서 내부 환경으로 침투하여 들어가는 것이 ctf pwnable에서 출제되는 문제상황이다
컴퓨터 구조 이해하기
컴퓨터는 크게 계산하는 부분과 저장하는 부분으로 나뉜다.(CPU와 메모리 레지스터)
메모리에다가 어떤 일을 해야하는지 저장해두고, 이 일을 하나씩 꺼내서 계산하는 부분에 넘겨준다 -> 필요한 값이나 데이터들은 전부 이 저장하는 부분에서 꺼내오게 된다
코드들은 메모리 레지스터에 저장이 되는데 CPU는 저장공간에 적힌 코드들을 순서대로 실행한다.
프로그램 실행과정
악의적인 실행흐름 만들기
WEB | Dreamhack
백그라운드: 웹
웹 : 인터넷을 기반으로 구현된 서비스 중 HTTP를 이용하여 정보를 공유하는 서비스
웹 서버 : 정보를 제공하는 주체
웹 클라이언트 : 정보를 받는 이용자
HTTP : 웹상에서 서로 통신을 하기 위해 정해둔 일종의 규칙
웹 서비스 : 이용자의 요청을 해석하고 가공하여 필요한 저오와 기능을 제공하는 능동형 서비스
프론트엔드 : 이용자의 요청을 받는 부분. 웹 리소스로 구성됨
웹 리소스 : 웹에 갖춰진 정보 자산. 모든 웹 리소스는 고유의 URI를 가지고 이를 이용하여 식별된다.
예) HTML, CSS, JS 등
백엔드 : 요청을 처리하는 부분
웹 클라이언트와 서버의 통신
1. (클라이언트) 이용자가 브라우저를 이용하여 웹 서버에 접속한다
2. (클라이언트) 브라우저는 이용자의 요청을 해석하여 HTTP 형식으로 웹 서버에 리소스를 요청한다
3. (서버) HTTP로 전달된 이용자의 요청을 해석한다
4. (서버) 해석한 이용자의 요청에 따라 적절한 동작을 한다. 리소스를 요청하는 것이라면, 이를 탐색한다. 계좌 송금, 입금과 같은 복잡한 동작을 요구할 경우 내부적으로 필요한 연산을 처리한다.
5. (서버) 이용자에게 전달할 리소스를 HTTP 형식으로 이용자에게 전달한다.
6. (클라이언트) 브라우저는 서버에게 응답받은 HTML, CSS, JS 등의 웹 리소스를 시각화하여 이용자에게 보여준다.
HTTP/HTTPS
HTTP(Hyper Text Transfer Protocol) : 서버와 클라이언트의 데이터 교환을 요청(Request)과 응답(Response) 형식으로 정의한 프로토콜. 클라이언트가 서버에 요청하면, 서버가 응답한다.
네트워크 포트 : 네트워크에서 서버와 클라이언트가 정보를 교환하는 추상화된 장소. 클라이언트가 서버의 포트에 접근하여 데이터를 내려놓고, 서버가 클라이언트에 보낼 데이터를 실어서 돌려보낸다.
서비스 포트 : 네트워크 포트 중에서 특정 서비스가 점유하고 있는 포트.
전송 계층의 프로토콜 - TCP, UDP
TCP로 데이터를 전송하려는 서비스에 UDP 클라이언트가 접근하면, 데이터가 교환되지 않는다. 반대도 마찬가지.
HTTP 메시지에는 클라이언트가 전송하는 HTTP 요청, 그리고 서버가 반환하는 HTTP 응답이 있다. 이들은 HTTP 헤드와 바디로 구성된다는 공통점이 있다
HTTP 헤드 : 각 줄은 CRLF로 구분되며, 첫 줄은 시작 줄(Start-line), 나머지 줄은 헤더(Header)라고 부른다. 헤더는 필드와 값으로 구성되며 HTTP 메시지 또는 바디의 속성을 나타낸다. 하나의 HTTP 메시지에는 0개 이상의 헤더가 있을 수 있다.
HTTP 바디 : 헤드의 끝을 나타내는 CRLF 뒤, 모든 줄을 말합니다. 클라이언트나 서버에게 전송하려는 데이터가 바디에 담긴다.
HTTP 요청 : 서버에게 특정 동작을 요구하는 메시지. 시작 줄은 메소드(Method), 요청 URI(Request-URI), 그리고 HTTP 버전으로 구성된다.
메소드 : URI가 가리키는 리소스를 대상으로, 서버가 수행하길 바라는 동작을 나타낸다
GET 메소드 : 리소스를 가져오라는 메소드, POST 메소드 : 리소스로 데이터를 보내라는 메소드
HTTP 응답 : HTTP 요청에 대한 결과를 반환하는 메시지. 상태 정보(Status), 클라이언트에게 전송할 리소스가 응답에 포함된다. 시작 줄은 HTTP 버전, 상태 코드(Status Code), 그리고 처리 사유(Reason Phrase)로 구성된다.
HTTP 버전 : HTTP 표준인 RFC 2616은 대략 40여개의 상태 코드를 정의하고 있는데, 각각은 첫 번째 자릿수에 따라 5개의 클래스로 분류된다.
HTTPS
HTTPS는 TLS(Transport Layer Security) 프로토콜을 도입하였다. TLS는 서버와 클라이언트 사이에 오가는 모든 HTTP 메시지를 암호화하고 공격자가 중간에 메시지를 탈취하더라도 이를 해석하는 것은 불가능하며, 결과적으로 HTTP 통신이 도청과 변조로부터 보호된다. 웹 서버의 URL이 http://로 시작되면 HTTP, https://로 시작되면 HTTPS 프로토콜을 사용한다.
백드라운드: 웹 브라우저
웹 브라우저
웹 브라우저는 서버와 HTTP 통신을 대신해주고, 수신한 리소스를 시각화하하여 일반이용자가 인터넷을 사용할 수 있도록 하였다.
URL : 웹에 있는 리소스의 위치를 표현하는 문자열이다. 브라우저로 특정 웹 리소스에 접근할 때는, URL을 사용하여 이를 서버에게 요청한다.
URL은 Scheme, Authority (Userinfo, Host, Port), Path, Query, Fragment 등으로 구성된다.
HOST : 웹 브라우저가 접속할 웹 서버의 주소를 나타낸다. Domain Name, IP Address의 값을 가질 수 있다.
IP Address : 네트워크상에서 통신이 이루어질 때 장치를 식별하기 위해 사용되는 주소
Domain Name을 Host 값으로 이용할 때, 브라우저는 Domain Name Server(DNS)에 Domain Name을 질의하고, DNS가 응답한 IP Address를 사용한다.
웹 렌더링
웹 렌더링(Web Rendering) : 서버로부터 받은 리소스를 이용자에게 시각화하는 행위. 서버의 응답을 받은 웹 브라우저는 리소스의 타입을 확인하고, 적절한 방식으로 이용자에게 전달한다.
웹 렌더링은 웹 렌더링 엔진에 의해서 이뤄지는데, 브라우저별로 서로 다른 엔진을 사용한다. 각각의 엔진에 따라 렌더링 과정과 순서, 속도의 차이는 있지만, HTML을 파싱하고 시각화하여 이용자에게 보여주는 것은 모두 같다.
'SWUFORCE > 모의해킹팀' 카테고리의 다른 글
모의해킹 과제 4주차 (0) | 2023.11.07 |
---|---|
3주차 웹해킹 과제 (0) | 2023.10.11 |
2주차 과제 - 시스템 해킹 (0) | 2023.10.04 |
모의해킹 2주차 과제 - 웹 해킹 (0) | 2023.10.03 |
모의해킹 2주차 과제 - 인프런 강의 [웹 해킹과 모의해킹 현업에 대한 이야기] (0) | 2023.10.03 |