[TECH UP] 웹 및 시스템 해킹 핵심 개념

Y·2025년 9월 29일

TECH UP

목록 보기
6/39
post-thumbnail

Pwnable (시스템 해킹)

  • 정의: C 언어나 어셈블리어 등 저수준 언어와 메모리, 포인터 관련 취약점을 다루는 시스템 해킹 분야임
  • 특징: pwnable.kr과 같은 워게임 사이트에서 다양한 리눅스/시스템 해킹 문제를 풀 수 있음

주요 시스템 취약점

  • Buffer OverFlow (BOF): 정해진 버퍼 크기보다 더 많은 데이터를 입력해 반환 주소를 변조하여 프로그램의 실행 흐름을 바꾸는 공격임
    • 예시: scanf("%s", buf)처럼 입력 크기를 제한하지 않는 함수를 사용할 때 발생할 수 있음
  • Return Oriented Programming (ROP): 기존 코드의 조각들을 재활용해 원하는 기능을 수행하는 기법임
  • Return To Library (RTL): 함수 반환 주소를 라이브러리 함수로 바꿔 원하는 코드를 실행하는 공격임
  • Format String Bug (FSB): printf 같은 형식 문자열 함수의 취약점을 이용하는 공격임

BOF 보호 기법

  • ASLR (Address Space Layout Randomization): 프로그램 실행 시 스택, 힙 등 메모리 주소를 랜덤으로 재배치하여 공격자가 중요한 주소를 예측하기 어렵게 만듦
  • CANARY: 스택 버퍼와 반환 주소 사이에 임의의 값을 삽입하여, 값이 변조되면 공격을 탐지하고 막음
  • DEP / NX: 스택이나 힙 같은 데이터 영역에 실행 권한을 제거하여, 해당 공간에서 코드가 실행되는 것을 방지함
    • NX (No eXecute): 리눅스 계열에서 사용됨
    • DEP (Data Execution Prevention): 윈도우 계열에서 사용됨

취약점 분석 및 연구 동향

  • 퍼징 (Fuzzing): 소프트웨어에 무작위 데이터를 입력해 예기치 않은 동작이나 충돌을 찾아내는 테스트 기법임
    • 과거에는 수동으로 취약점을 찾았으나, 요즘은 퍼징 툴을 사용해 자동화가 잘 되어 있음
  • AEG (Automatic Exploit Generation): 취약점을 자동으로 찾아 익스플로잇 코드를 생성하는 연구 분야임
  • 보안 학회: NDSS, IEEE S&P, USENIX SECURITY 등이 유명한 보안 컨퍼런스임

SQL Injection 개요

  • SQL Injection: 웹사이트 입력란에 SQL 구문을 삽입하여 데이터베이스를 조작하는 공격임
  • 공격 원리: SELECT * FROM user_tb WHERE ID=' or 1=1 -- ' and PW='1'과 같은 구문에서 --는 SQL 주석이므로 그 뒤의 코드가 무시됨. 1=1은 항상 참이므로 올바른 ID/PW 없이도 로그인에 성공할 수 있음

SQL Injection 종류

  • UNION SQL Injection: UNION SELECT를 사용해 다른 테이블의 데이터를 가져옴. 이때 SELECT문의 컬럼 개수가 일치해야 함
  • Error Based SQL Injection: 에러 메시지를 통해 데이터베이스의 정보를 얻어내는 공격임
  • Blind SQL Injection: 참/거짓 또는 시간 지연으로 데이터베이스 정보를 추측해 내는 공격임
  • TIME Based SQL Injection: 시간 지연을 이용하는 블라인드 공격의 한 종류임

WAF (웹 방화벽) 우회 기법

  • WAF BYPASS: 웹 방화벽을 우회해 SQL Injection 공격을 성공시키는 다양한 기법이 존재함
    • URL Encoding: 특수문자를 URL 인코딩 값으로 변환해 방화벽을 속임
    • 주석: /**/ 같은 주석을 사용해 SQL 구문의 일부를 숨김
    • 대소문자: SQL 키워드를 대소문자를 섞어 사용함
    • 공백 우회: 공백 대신 %0a (줄바꿈), %09 (탭) 같은 문자를 사용함

워게임 사이트

  • Webhacking.kr: 웹 해킹 입문 사이트로 유명하며, PHP 코드, 쿠키, Javascript, RegExp, Blind SQLI 등 다양한 웹 취약점 개념을 배울 수 있음
  • Wargame.kr: 다양한 시스템 해킹 및 웹 해킹 문제를 풀어볼 수 있는 사이트임

XSS (Cross-site Scripting) 개요

  • XSS 정의: 웹사이트에 악성 스크립트를 삽입하여 사용자의 쿠키나 세션 정보를 탈취하는 공격임
  • 공격 시나리오: 공격자(철수)가 악성 코드가 담긴 메일을 보내면, 피해자(영희)가 메일을 읽는 순간 영희의 쿠키가 철수에게 전달됨. 철수는 이 쿠키를 이용해 영희의 계정에 접근할 수 있음
  • XSS 공격에 사용되는 태그: <script>, <iframe>, 인코딩 등을 활용함

XSS를 위한 기본 개념: HTTP와 쿠키

  • HTTP: 웹상에서 정보를 주고받는 프로토콜(통신 규약)로, 요청(Request)과 응답(Response)을 통해 데이터를 주고받음
  • 쿠키(Cookie): 웹사이트가 인터넷 사용자의 컴퓨터에 설치하는 작은 기록 정보 파일임. HTTP의 비연결성(Stateless)을 보완하여 사용자 정보를 세션 형태로 유지하는 데 사용됨

XSS 공격 분석 및 보안 대책

  • 공격 분석: 해커는 게시판에 악성 스크립트를 작성하고, 피해자가 그 글을 읽었을 때 피해자의 쿠키 정보가 해커에게 전송되도록 함. 이 쿠키를 이용해 피해자의 계정에 로그인하여 각종 범죄를 저지를 수 있음
  • 보안 대책:
    • HttpOnly 속성: 쿠키에 HttpOnly 속성을 설정해 자바스크립트로 쿠키에 접근하는 것을 막음
    • 특수문자 필터링: < (태그 시작), > (태그 끝), &, " 같은 XSS 공격에 자주 사용되는 특수문자를 필터링하는 함수를 적용함
    • 중요 정보 저장 금지: 비밀번호 같은 중요한 정보는 쿠키에 저장하지 않아야 함
    • 개인정보 등급 상향 조절: 브라우저의 개인정보 등급을 상향 조절하여 쿠키의 일부를 제한할 수 있음

0개의 댓글