Security 14

정보보안 6차시: 포렌식 - 파일 삭제와 복구 원리

경희대학교 중앙동아리 쿠러그의 정보보안 강의를 기반으로 정리한 글입니다.파일파일이란 데이터를 컴퓨터 저장 장치에 개별적으로 기록하기 위한 컴퓨터 자원이다. 파일 타입어떤 형식의 데이터를 저장하는지를 표현하는 방식이다.Text File, Executable File, Compressed File, Document File, MP3, MP4 등Computer Storage Device디지털 데이터를 저장할 수 있는 장치이다.자기테이프, HDD, RAM, SSD(Flash Memory) 등저장장치 접근▶ HDD: 자기적인 방식으로 데이터 저장플래터: 수많은 N극과 S극으로 데이터를 저장하는 판 (일반적으로 양면 모두 사용)스핀들: 플래터를 회전시키는 것 (회전의 단위: RPM, Revolution Per Mi..

XSS game

경희대학교 중앙동아리 쿠러그의 정보보안 강의를 기반으로 정리한 글입니다.XSS gameXSS game은 XSS 공격을 통해 다음과 같이 alert()를 띄우는 게임이다.Level 1: Hello, world of XSS해당 창에 "hi"라고 입력하면,다음과 같이 "hi"가 그대로 뜨는 것을 확인할 수 있다. 주어진 Target code에서 해당 페이지를 보여주는 부분을 찾아보면,message = "Sorry, no results were found for " + query + "." 해당 코드를 찾을 수 있다.이 코드를 보면 입력한 대로 query로 들어간다. 때문에, 아래와 같이 입력을 넣어주면 alert()를 띄울 수 있다. Level 2: Persistence is keyLevel 1을 풀었던 방식..

정보보안 3차시: 웹 - SQL Injection

경희대학교 중앙동아리 쿠러그의 정보보안 강의를 기반으로 정리한 글입니다.배경 지식DB (Database)여러 사람이 공유하여 사용할 목적으로 구조화된 정보 또는 데이터의 조직화된 모음집이다.대부분은 여러 개의 표가 모여 있다. (마치 엑셀 시트처럼) DBMS (Database Management Systme)데이터베이스를 '데이터의 집합'이라고 정의한다면, 이런 데이터베이스를 관리하고 운영하는 소프트웨어를 DBMS라고 한다.다양한 데이터가 저장되어 있는 데이터베이스에 여러 명의 사용자나 응용 프로그램이 공유하고 동시에 접근이 가능하게 한다.ex) MySQL, Oracle, MariaDBSQL (Structured Query Language)구조화된 질의 언어라는 뜻으로, 데이터를 쿼리 조작 및 정의하고 ..

정보보안 2차시: 웹 - 기본적인 웹 취약점

경희대학교 중앙동아리 쿠러그의 정보보안 강의를 기반으로 정리한 글입니다.웹 해킹해킹이란 개발자가 의도하지 않은 동작을 입력 혹은 행위를 통해 악의적인 결과를 만들어내는 것을 말하며,웹 해킹은 클라이언트와 웹 서버 간의 요청과 응답 흐름에서 발생한다.클라이언트 / 서버▶ 클라이언트 / 서버 클라이언트브라우저서버라는 다른 컴퓨터에 접속할 수 있는 응용프로그램이나 서비스웹페이지에서 하는 요청은 대부분 웹브라우저가 함 (웹에서 클라이언트는 브라우저)HTML, JS, CSS 등웹페이지를 요청해서 CSS와 같은 요소에 연결해서 홈페이지가 그려짐브라우저의 위치도 내 컴퓨터이기에, 코드들의 실행 위치도 내 컴퓨터 안에 있음페이지를 전송받으면 인터프리터를 통해 페이지를 화면에 뿌림서버 사이드웹서버, 데이터베이스클라이언트..

정보보안 1차시: 네트워크 - ARP와 TCP/UDP

경희대학교 중앙동아리 쿠러그의 정보보안 강의를 기반으로 정리한 글입니다.네트워크MAC vs IPMAC각 네트워크 인터페이스에 할당된 물리적인 고유 식별 주소로,Data Link 계층에서 사용되며, 같은 네트워크 내에서만 유일하면 된다. 48bit 구성 -> 8bit씩 6자리로 구성 -> 16진법으로 총 12자리로 표기ex) 12-34-56-AB-CD-EF (앞 3자리는 제조사, 뒤 3자리는 기기 고유 코드) IP실제 통신 과정에서 사용하는 고유 주소로,Network 계층에서 사용되며, 같은 네트워크 내인 LAN 환경에서는 MAC 주소 기반 통신이 이루어진다. IP 주소IPv4: 32비트로, 8비트씩 끊어 10진수로 나타낸다. ex) 192.168.0.1IPv6: 128비트로, 4자리씩 끊어 16진수로 나..

Beginners: DH101 - 4 (101)

DreamHack의 Beginners 로드맵을 기반으로 정리한 글입니다.System Hacking시스템 해킹(System Hacking)은 컴퓨터 프로그램의 행위를 조작하여 공격자가 원하는 행동을 실행하도록 하는 공격 전반을 일컫는다. '시스템 해킹'은 컴퓨터에서 구동되는 모든 프로그램에 대한 해킹에 적용 가능한 말이다. 흔히 웹 해킹이라고 부르는 인터넷 환경에서 발생하는 해킹도 넓게 보면 웹 브라우저라는 프로그램 상에서 발생하는 취약점이기 때문이다. System Hacking 관련 취약한 프로그램들은 대부분 C 언어로 구현되었다. C 언어는 효율성과 유연함에 큰 강점이 있어 다양한 애플리케이션을 구현하는데 사용된다. 여기에는 운영체제, 게임 등 굉장히 복잡한 프로그램도 포함된다. C 언어 기반 프로그램..

Beginners: DH101 - 3 (코딩)

DreamHack의 Beginners 로드맵을 기반으로 정리한 글입니다.Visual Studio Code코딩(Coding)은 프로그래밍 언어를 작성함으로써 컴퓨터에게 명령할 수 있는 체계를 만드는 행위로, 해킹과 뗄 수 없는 관계이다. 그리고 이러한 코딩을 시작하기 위해선 소스 코드 편집기를 잘 사용할 수 있어야 한다. 비주얼 스튜디어 코드(Visual Studio Code, VS Code)는 Windows, macOS, Linux에서 사용 가능한 소스 코드 편집기이다. 기본적으로 JavaScript, TtypeScript, Node.js를 지원하며 확장 프로그램(Extension)을 통해 C, Java, Python 등 100개 이상의 언어를 지원한다. 가볍고 무료인데 다양한 기능을 제공하여 많은 사람..

Beginners: DH101 - 2 (리눅스 사용법)

DreamHack의 Beginners 로드맵을 기반으로 정리한 글입니다.셸(Shell)셸은 유저가 리눅스 시스템을 이용할 수 있는 인터페이스이다. 셸은 유저에게 입력을 받고 운영체제가 그것을 프로그램으로 처리하면 그 결과를 유저에게 출력한다.  Ubuntu를 기준으로 했을 때, 터미널을 실행하면 bash 셸이 자동으로 실행된다. 셸 프롬프트(Shell Prompt)user@user-VirtualBox:~$ 이것을 셸 프롬프트라고 부른다. 유저는 셸 프롬프트를 보고 셸이 명령어를 입력 받을 준비가 되었음을 알 수 있다. user@user-VirtualBox:~$ iduid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),27(sudo),30(di..

Beginners: DH101 - 1 (컴퓨터 과학 기초)

DreamHack의 Beginners 로드맵을 기반으로 정리한 글입니다.진법진법은 임의의 숫자 혹은 문자를 사용하여 수를 표현하는 체계를 말한다. n진법은 한 자릿수를 n가지(0 ~ n-1)의 숫자 혹은 문자로 나타낼 수 있다. 10진법, 2진법, 16진법으로 나타낸 수는 각각 10진수(decimal), 2진수(binary), 16진수(hexadecimal)라고 한다. 10진법: 10개(0 ~ 9)의 숫자로 수를 표현실생활에서는 손가락 10개로 숫자를 세고, 각 자릿수를 0 ~ 9까지의 수로 나타낸다. 사람들이 자연스럽게 사용하고 있는 수 체계가 바로 10진법이다. 2진법: 2개(0, 1)의 숫자로 수를 표현컴퓨터는 사람과 다르게 10진법이 아닌 2진법을 사용한다. 흔히 컴퓨터를 두고 '0과 1로 이루어..

System Hacking: Shellcode - 2

DreamHack의 System Hacking 로드맵을 기반으로 정리한 글입니다.Exploit Tech: 2. execve Shellcode▶ 리눅스 계층 셸(Shell, 껍질)이란 운영체제에 명령을 내리기 위해 사용되는 인터페이스로, 운영체제의 핵심 기능을 하는 프로그램을 커널(Kernel, 호두 속 내용물)이라고 하는 것과 대비된다. 셸을 획득하면 시스템을 제어할 수 있게 되므로 통상적으로 셸 획득을 시스템 해킹의 성공으로 여긴다. execve 셸코드는 임의의 프로그램을 실행하는 셸코드인데, 이를 이용하면 서버의 셸을 획득할 수 있다. 또한, 다른 언급없이 셸코드라고 하면 이를 의미하는 경우가 많다. 최신의 리눅스는 대부분 sh, bash를 기본 셸 프로그램으로 탑재하고 있으며, 이 외에도 zsh, ..