정보보안개론 (3)

송예원·2024년 9월 20일
0

보안

목록 보기
6/11
  1. 웹 보안

1) 웹과 HTTP의 이해

(1) 웹의 이해

  • 웹: 전 세계의 사람들과 생각을 공유하기 위해 만들어짐.
    HTML은 하이퍼텍스트를 효과적으로 전달하기 위한 스크립트 언어
    대부분의 사이트에 사용자가 마음대로 접근할 수 있기 때문에 보안 취약점이 매우 많음

(2) HTTP 프로토콜

  • 다양한 응용프로그램에 접근해 활동이 가능한 프로토콜.
    웹에서는 HTTP 외에도 SMTP, POP, FTP, Telnet 등 다양한 프로토콜이 사용됨

  • 기본 연결:
    • 서버가 준비상태가 되면 클라이언트는 읽고자 하는 문서를 서버에 요청
      -> 서버는 웹 문서 중 요청받은 것을 클라이언트에 전송하고 연결 종료

(3) HTTP Request
: 웹 서버에 데이터를 요청하거나 전송할 때 보내는 패킷
GET, POST같은 메서드를 주로 사용

  • GET: 요청 데이터의 인수를 웹브라우저의 URL을 통해 전송
    각각의 이름을 &로 결합하며, 글자 수는 255자로 제한됨
    데이터가 주소 입력란에 표시되기 때문에 최소한의 보안도 유지되지 않음
    ex) www.wishfree.or.kr/list.php?page=1&search=test

  • POST: URL에 요청 데이터를 기록하지 않고 HTTP헤더에 데이터를 전송
    GET에서의 ?~~부분이 존재하지 않고 내부의 구분자가 이름과 값을 구분, 서버가 해석하여 데이터를 처리함
    보내려는 데이터가 URL을 통해 노출되지 않아 최소한의 보안성은 갖춤

  • 일반적으로 게시판의 목록은 접근자유도를 부여하기 위해 GET을,
    게시글을 저장/ 삭제하거나 대용량 데이터를 전송할 때는 POST방식을 사용
  • 외에도 HEAD, OPTIONS, PUT 등의 방식이 사용됨

(4) HTTP Response
: HTTP Request에 대한 응답 패킷

  • 서버에서 쓰이는 프로토콜 버전, Request에 대한 실행 결과 코드, 간략한 실행 결과 설명문에 대한 내용 등이 담겨있음
    데이터 전송이 끝나면 서버는 연결을 끊음

2) 웹 서비스의 이해

(1) 프론트엔드
: 웹 브라우저에서 실행되는 프로그램 영역
HTML, JS, CSS 등으로 효율적인 웹 운영을 가능하게 함

(2) 백엔드
: 웹 서비스를 제공하는 데 필요한 REST API를 제공하는 영역
Java, Python 등으로 프론트엔드에서 요청된 수행을 실행함

3) 웹 해킹

(1) 웹 취약점 스캐너를 통한 정보 수집

  • 웹 정보를 수집하기 위해 웹 메뉴를 파악하는데, 이 활동을 효율적으로 하기 위해 웹 취약점 스캐너를 사용함
    하지만 이 스캐너로 확인된 취약점이 실제 보안 문제가 있는 취약점인지는 따로 확인해야함

(2) 웹 프록시를 통한 취약점 분석

  • 웹의 구조를 파악하거나 취약점을 점검할 때, 웹 해킹을 할 때 웹 프록시를 사용함
    클라이언트가 웹 서버와 웹 브라우저 사이에 전달되는 모든 HTTP 패킷을 웹 프록시를 이용해 확인하며 수정 가능함

(3) 구글 해킹을 통한 정보 수집

4) 웹의 취약점과 보안

(1) 웹의 주요 취약점

  • 명령 삽입 취약점
    : 클라이언트의 요청을 처리하기 위해 전송받는 인수에 특정 명령을 실행할 수 있는 코드가 포함되는 경우, 적절히 필터링하지 않으면 삽입공격에 대한 취약점이 생김

  • 인증 및 세션 관리 취약점
    • 취약한 패스워드 설정
    • 사용자 데이터를 통한 인증

  • XSS 취약점
    : 공격자가 작성한 스크립트가 다른 사용자에게 전달되며 다른 사용자의 웹 브라우저 안에서 적절한 검증 없이 실행되기 때문에 사용자의 세션을 뺏거나 웹사이트를 변조할 수 있음

  • 취약한 접근 제어
    : 인증된 사용자가 수행할 수 있는 제한이 제대로 적용되지 않음
    => 공격자가 사용자 계정 접근, 접근권한 변경같은 수행할 수 있음

  • 보안 설정 오류
  • 민감한 데이터 노출
  • 공격 방어 취약점
  • CSRF 취약점
  • 취약점이 있는 컴포넌트 사용
  • 취약한 API

(2) 웹의 취약점 보완

  • 특수문자 필터링
  • 서버 통제 적용
  • 지속적인 세션 관리
  1. 코드 보안

1) 시스템 구성과 프로그램 동작

(1) 프로그램과 코드 보안

  • 소스코드는 하드웨어, 어셈블리어에 비해 보안에 취약할 수 있음

(2) 시스템 메모리의 구조

  • 스택: 프로그램 로직이 동작하기 위한 인자와 프로세스 상태를 저장
  • 힙: 프로그램이 동작할 때 필요한 데이터를 임시로 저장
  • 레지스터: CPU의 임시메모리, CPU연산과 어셈블리어 동작에 필요

(4) 셸
: 운영체제를 둘러싸고 있으면서 입력받은 명령어를 실행하는 명령어 해석기
버퍼 오버플로/ 포맷 스트링 공격을 통해 얻고자 하는 것= 관리자 권한의 셸

(5) 프로세스 권한과 SetUID
: 유닉스 시스템을 해킹하는데 아주 중요,
rwsr-xr-x로 권한이 설정되어있는 경우
각 계정에는 고유한 UID가 존재하는데, SetUID가 부여된 프로그램을 실행할 때는 임시로 권한 변경이 가능함

2) 버퍼 오버플로 공격

(1) 버퍼 오버플로 공격의 개념
: 길이에 대한 불명확한 정의를 악용한 덮어쓰기로 발생
=> 정상적인 경우에는 사용되지 않아야 할 주소공간에 해커가 임의의 코드를 덮어쓰는 것

(3) 버퍼 오버플로 공격의 대응책

  • 버퍼 오버플로에 취약한 함수 사용하지 않기
    • strcpy, strcat, getwd, gets, fscanf, scanf, realpath, sprintf
  • 최신 운영체제 사용하기

3) 포맷 스트링 공격

(1) 포맷 스트링 공격의 개념
: 데이터 형태에 대한 불명확한 정의로 발생
버퍼 오버플로와 가이 ret값을 변경하여 임의의 코드 실행 가능
** 포맷 스트링: %s, %d, %f, %u ...

(2) 포맷 스트링 공격의 원리

  • 포맷 스트링 문자를 이용한 메모리 열람
    -> 포맷 스트링 문자를 이용한 메모리 변조

4) 메모리 해킹

(1) 메모리 해킹의 개념

  • 메모리 해킹: 프로그램의 동작에 관여하지 않고 프로그램이 실행되는 데 필요한 정보를 저장해둔 메모리를 조작하는 것
    사용자가 해킹여부를 인지하지 못하고, 해킹 흔적을 추적하지 쉽지 않음
    => 메모리 주소에 저장되는 값을 암호화해야 함

(2) 메모리 해킹의 원리
ex) 지뢰찾기 게임을 대상으로 한 메모리 해킹
1. MHS (memory hacking software)실행 후 메모리 해킹 대상 프로그램 선택
2. 메모리에서 특정 값 찾기
3. 지뢰찾기 게임 내의 시간 값을 증가시키기 위해 게임 실행
4. 2번의 기존 확인 대상에서 값이 증가한 대상 찾기
5. 메모리 주소 및 값 확인
6. 메모리 주소 변경

0개의 댓글

관련 채용 정보