02. 레이스 컨디션 수행01. 심볼릭 링크 기능 내용에 이어서 레이스 컨디션 실습을 해보도록 할 것이다. symlink.txt 파일을 생성해놓고, link.txt 파일이 삭제되었다가 다시 생성되어도 -> 그대로 원본파일에 영향을 끼칠 수 있다는 점을 이용 그 과정에서 레이스 컨디션이 발생하는 케이스(그 사이에 symlink.txt 파일을 수정하거나 등등 .. 일종의 해킹에 해당되는 행동을 할 수 있음)1) tempbug.ctempbug.c : 파일명과 파일 내용의 두 인수를 주면, 해당 내용을 파일에 쓰는 역할 🖥️ 코드를 짜기 전에, 편의를 위해 vimrc 파일을 아래와 같이 편집하도록 하자.➡️ tap space = 4 ➡️ autoindent : 자동들여쓰기 🖥️ vim 에디터로 tempbug.c..
01. 심볼릭 링크 기능 파악 ※ 하드 링크 기능 알아보기 ➡️ 하드 링크 생성 🖥️ A.txt 파일을 관리자 소유로 /root 디렉터리에 생성하여, 파일 안에 적당한 문구를 생성한다. ➡️ A.txt 파일을 ls -al 했을 때 나오는 column 에서 '1'이 의미하는 바가 이번 실습에서 중요하다. ⭐ 해당 파일에 링크(Link)되어 있는 파일의 개수를 표시함을 기억하면서 실습해보도록 하자. * 하드 링크 생성 🖥️ 다른 옵션 없이 두 파일(/root 디렉터리에 있는 A.txt 원본파일 & link.txt로 새로 생성한 하드 링크 파일)을 ln(link) 명령어로 연결한다. ls -al 을 통해 링크된 파일의 권한 확인 : 원본파일인 A.txt와 같음 링크되어 있는 파일의 개수 : 2 -> 1개 증가..
0. 패스워드 크래킹 사전작업 1) IOphtcrack 7 설치 2) ophcrack 설치 3) 레인보우 테이블 다운로드 4) 환경 설정 윈도우 서버 2016에는 암호의 복잡도가 일정 수준 이상이기 때문에, 원활한 실습을 위해 이 설정을 해제하기로 하자. [제어판] - [관리 도구] - [로컬 보안 정책] - [계정 정책] - [암호 정책] '암호는 복잡성을 만족해야 함' 속성 - '사용 안 함' 으로 설정 5) 테스트 계정 생성 및 패스워드 설정 패스워드 크래킹에 사용할 계정과 패스워드를 생성해보자. [컴퓨터 관리] - [로컬 사용자 그룹] - [사용자] 에서 설정 계정과 패스워드는 다음과 같이 설정해주었다. 계정 패스워드 test01 1234 test02 qwer1234 test03 QwEr1234 ..
01. 리눅스에서 사전 대입 공격 실습 1) 관련 프로그램 설치 관리자 권한으로 John-the-ripper 를 설치하고 시작하도록 하자. 2) 테스트 계정 생성 및 패스워드 설정 패스워드 크래킹에 사용할 계정을 생성하자. useradd 명령어를 통해 계정을 생성하고, passwd 명령어를 통해 비밀번호를 설정할 수 있다. 비밀번호는 ggaann1234로 설정할 것이다! 추가한 사용자의 패스워드 정보는 /etc/shadow 파일에서 확인할 수 있다. 3) 패스워드 크래킹 사전 파일 준비 (dic.txt) 패스워드로 사용될 수 있는 사전 파일을 미리 작성해야 한다. 사전 파일의 이름은 dic.txt.로 하여 생성해보도록 하자. 파일에는 단어들의 list를 만들어 저장하면 된다. 이때, test01 계정의 ..
※ 리눅스 운영체제 중 하나인 Ubuntu 가상 머신을 생성한 후 실습을 해보도록 하자. ※ 간단한 리눅스 명령어 정리 ls : 파일 탐색 (Windows에서의 dir) clear : Terminal 화면을 clear mkdir : 새 디렉토리 생성 cd : 폴더 변경 (used for navigating directories) pwd : print working directory, 현재 작업 위치의 절대경로를 출력 01. 파일 접근 권한 작성 실습 1) 파일과 디렉토리를 생성할 때 기본 권한 확인 파일 : rw-rw-r--(664) 권한 디폴트로 생성 (아래 사진에서 파일 a.txt) 디렉토리 : rwxrwxr-x(775) 권한 디폴트로 생성 (아래 사진에서 디렉토리 a) 파일 : 기본 생성 최고 권한..
[학습목표] 암호의 발전과정을 살펴본다. 고전암호를 통해, 간단하게 만들어진 암호들이 왜 안전하지 않은 지 알 수 있다. 1. Recall 시저 암호 ⚠️ 케르크호프스의 원리(Kerckhoffs's principle)와 맞지 않음 키가 없기 때문에, 암호화 방법을 알면 복호화 가능 케르크호스프의 원리 : 암호의 안전성은 오직 키의 비밀성에만 의존, 2. 시저 암호의 일반화 : 덧셈 암호 (Shift cipher) 🔑 키 생성 : 0~25까지의 랜덤한 후 k 선택 🔒 암호화 : x -> x + k (mod 26) 🔓 복호화 : Y -> Y - k (mod 26) 1) 덧셈 암호 해독해보기 2) 덧셈 암호에 대한 공격 방법 COA (Ciphertext Only Attack) 26개의 가능한 키 모두 시도 암..
[학습 목표] 1. 고전암호와 현대암호의 차이를 설명할 수 있다. 2. 고전암호의 기본 원리인 치환 기법을 이해한다. 3. Alice, Bob이 공개된 채널을 통해 암호화 된 통신을 할 때 가능한 공격 시나리오를 분류하고, 예를 들어 설명할 수 있다. 4. 대칭키 암호와 공개키 암호의 차이를 이해하고, 장단점을 설명할 수 있다. 1. 고전암호 : 시저암호 (Caesar, 카이사르) 치환 시저 암호의 조금 더 안전한 변형 : 비밀키가 0~25까지의 수가 될 수 있음 1) 고전암호의 문제점 쉽게 해킹 가능 변형된 시저 암호의 경우, 가능한 모든 비밀키(26가지의경우)로 복호화 시도 가능 철자의 빈도, 자주 사용되는 단어/형태를 이용하여 더욱 쉽게 풀 수 있음 ex) 영어에서 빈도 높은 알파벳 : E, T, ..
어셈블리 명령어를 배우기 위해 알아야 하는 기초 배경지식이다. 컴퓨터 구조와 명령어 집합 구조, 그리고 인텔 x86-64에 대한 대략적으로 이해해보자. 1. 컴퓨터 구조(Computer Architecture) - 폰 노이만 구조 중앙처리장치(Central Processing Unit, CPU) 연산과 제어 산술논리장치(Arithmetic Logic Unit, ALU) 제어장치(Control Unit) - CPU 제어 레지스터(Register) - CPU에 필요한 데이터 저장 💥기억장치가 있는데 CPU 안에 레지스터가 왜 필요한가? 기억장치(Memory) 저장 주기억장치(Random-Access Memory, RAM) - 프로그램 실행과정에 필요한 데이터들 임시 저장 보조기억장치(HDD, SSD) - 운..
컴퓨터는 CPU와 메모리로 구성되어 있다. CPU는 실행할 명령어와 명령어 처리에 필요한 데이터를 메모리에서 읽고, ISA에 따라 처리하고, 연산의 결과를 다시 메모리에 적재한다. 이와 같이 CPU의 동작과 메모리 사이에 밀접한 연관이 있다. 메모리 오염(Memory Corruption) 취약점 : 공격자가 메모리를 악의적으로 조작 -> 그 값에 의해 CPU도 잘못된 동작을 할 수 있다. 시스템 해킹의 많은 공격기법이 메모리 오염을 기반으로 하고 있다. 리눅스 메모리 구조에 대해 알아보며, 프로세스 메모리의 전체 구조에 대해 통찰할 수 있도록 하자. 0. 세그먼트(Segment)란 리눅스에서는 프로세스의 메모리를 크게 5가지의 세그먼트(Segment)로 구분한다. 세그먼트란 적재되는 데이터의 용도별로 메..
1. Same Origin Policy (SOP) 이용자가 웹 서비스에 접속할 때, 브라우저는 해당 웹 서비스에서 사용하는 인증 정보인 쿠키를 HTTP 요청에 포함시켜 전달함 💥보안 위협💥 이 특징 때문에 악의적인 페이지가 클라이언트의 권한을 이용해 대상 사이트에 HTTP 요청을 보내고, HTTP 응답 정보를 획득하는 코드를 실행할 수 있음 클라이언트 입장에서 가져온 데이터를 악의적인 페이지에서 읽을 수 없도록 해야 함 ➡️ "동일 출처 정책(Same Origin Policy, SOP)" 브라우저의 보안 메커니즘 참고(mozilla) https://developer.mozilla.org/ko/docs/Web/Security/Same-origin_policy 동일 출처 정책 - 웹 보안 | MDN 동일 출..