본문 바로가기

메가IT아카데미 국기과정79

[1-7] Docker 볼륨 관리 1. Docker 볼륨 관리 컨테이너를 실행하면 이미지는 읽기 전용으로 동작하며 컨테이너는 읽기/쓰기로 동작한다. 그렇기 때문에 컨테이너에서 작업한 데이터는 이미지에 기록되는 것이 아니라 이미지 위에 컨테이너 레이어라는 곳에 기록된다. 대신, 컨테이너 레이어에 기록된 데이터는 컨테이너가 삭제되면 사라지기 때문에 다시 사용할 수 없다. 이런 문제점을 해결하기 위한 방법 중에 하나가 바로 볼륨을 구성하는 것이다. 볼륨을 구성하면 호스트와 컨테이너 간에 데이터를 공유하기 때문에 컨테이너 레이어에 기록된 데이터를 복원할 수 있다. 즉, 볼륨은 컨테이너의 데이터를 호스트에 저장하는 기능이며, 다음과 같이 2가지 방식이 있다. 1-1. volume 호스트 Docker 루트 디렉토리에 volumes이라는 디렉토리를 .. 2022. 9. 14.
[1-6] Docker 컨테이너 관리 1. 컨테이너 생성 - 이미지로 부터 컨테이너를 생성한다. - 이때, 이미지는 Docker에서 서버 기능을 구동하기 위해 필요한 디렉토리 및 파일들의 집합이다. (Ex : /etc, /bin....) - 'docker container create' 명령어를 이용하여 이미지에 포함될 리눅스의 디렉토리 및 파일들을 스냅샷 한다. - 단, 'docker container create' 명령어는 컨테이너를 생성할 뿐 시작하지는 않는다. [참고] 스냅샷 - 스토리지 안에 존재하는 디렉토리와 파일들을 특정 타이밍에 포인트 정보를 추출한것이다. 1) 명령어 형식 docker container create [옵션] 이미지 [명령어] [인자값...] 2) 명령어 사용 예제 docker container create -.. 2022. 9. 13.
[1-5] Docker 이미지 업로드 1. 도커 허브 로그인 & 로그아웃 1) 도커 허브 로그인 - Docker에서 도커 허브에 이미지를 업로드하려면 다음과 같이 로그인을 실시해야 한다. docker login - 로그인을 실시한 이후, '/root/.docker/config.json' 파일을 확인하면 아이디/패스워드가 Base64로 되어있는 것을 확인할 수 있다. ls -la .docker/config.json cat /root/.docker/config.json 2) 도커 허브 로그아웃 - 로그아웃을 실시한 이후, '/root/.docker/config.json' 파일을 다시 확인하도록 한다. docker logout 3. 도커 이미지 업로드 1) 도커 이미지 업로드 - 도커 이미지를 도커 허브에 업로드하려면 이미지를 제작하여 로그인한 .. 2022. 9. 13.
[1-4] Docker 이미지 관리 1. Docker 이미지 관리 1) Docker Hub - https://hub.docker.com - GitHub 또는 Bitbucket과 같은 소스 코드 관리 툴과 연계하여 코드를 빌드하는 기능이나 실행 가능한 애플리케이션의 이미지를 관리하는 기능을 갖춘 Docker의 공식 리포지토리 서비스이다. Docker Hub Container Image Library | App Containerization Build and Ship any Application Anywhere Docker Hub is the world's easiest way to create, manage, and deliver your team's container applications. hub.docker.com 2) Docker 명.. 2022. 9. 13.
[1-3] Docker 구동 1. Docker 서비스 시작 1) Docker 서비스 시작 systemctl enable --now docker.service systemctl status docker.service 2) Docker 버전 확인 docker version 3) Docker 시스템 정보 확인 docker system info 4) docker 디스크 이용 현황 확인 docker system df 2. Docker 구동 테스트 1) 'hello-world' 이미지를 이용한 Docker 엔진 구동 상태 확인 docker container run hello-world - Docker 이미지 내용을 확인한다. docker image ls docker container ls -a docker system df 2) 우분트 이미지.. 2022. 9. 13.
[1-2] Docker 설치 1. Docker 설치 가이드 사이트 Install Docker Desktop on Mac - https://docs.docker.com/desktop/mac/install/ Docker Desktop for Mac user manual - https://docs.docker.com/desktop/mac/ Install Docker Desktop on Windows - https://docs.docker.com/desktop/windows/install/ Docker Desktop for Windows user manual - https://docs.docker.com/desktop/windows/ Install Docker Engine on CentOS - https://docs.docker.com/e.. 2022. 9. 13.
[1-1] Docker 실습 환경 구성 1. 가상 서버와 컨테이너 차이점 1) 온프레이미스 환경 물리적 서버1 물리적 서버2 물리적 서버3 (Apache) (Mysql) (Log) 2) 가상 서버 환경 [가상 서버1] | [가상 서버2] | [가상 서버3] 어플리케이션 A | 어플리케이션 B | 어플리케이션 C OS | OS | OS (Apache) (Mysql) (Log) ──────────────────────────── 하이퍼바이저(Hyper-V, vmware) ──────────────────────────── OS ──────────────────────────── 하드웨어 ──────────────────────────── 2) 컨테이너 환경 - 파일과 디렉토리 정보만 갖고 있는 이미지를 이용하여 컨테이너라는 단위로 가상 호스트를 .. 2022. 9. 13.
[2-1] 악성코드 파일 1. PowerShell 분석 2. PowerShell 난독화 3. JavaScript 난독화 4. VBA 분석 5. HWP 분석 6. PDF 분석 2022. 9. 13.
[1-13] PE파일 분석 2022. 9. 13.
[1-12] 인젝션 이해(코드 인젝션) 1. 코드 인젝션 - 인젝션 대상 프로세스에 DLL 파일을 삽입하는 것이 아니라 실행 코드와 데이터를 삽입한 이후 실행하는 방식이다. - 코드만 삽입하는 방식이므로 별도의 데이터가 필요한 경우 데이터를 같이 삽입해야 한다. - DLL 인젝션과 마찬가지로 인젝터가 필요하며, 인젝터는 다음과 같은 과정을 실시한다. 사용할 데이터 및 함수 구성 데이터 영역 인젝션 코드 영역 인젝션 원격 쓰레드 생성 및 실행 2. 코드 인젝션 특징 - DLL 파일 없이 인젝터에 의해서 인젝션이 가능하다. - 주로 작은 코드와 데이터를 인젝션할 때 용이하다. - 그리고 DLL 인젝션은 해당 프로세스에 인젝션한 흔적이 발견되지만, 코드 인젝션은 흔적을 발견하기 힘들다. 2022. 9. 13.
[1-11] DLL 인젝션 이해(DLL 인젝터 생성) 1. 인젝션 - 실행 중인 프로세스에 DLL 또는 코드를 강제로 삽입하여 프로세스에서 해당 코드가 실행될게 하는 것을 의미함 - 인젝션 유형 : 라이브러리 파일을 삽입하는 DLL 인젝션, 메모리에 영역에 코드를 직접 삽입하는 코드 인젝션 - 인젝션을 사용하는 사례는 다음과 같다. 프로그램 기능을 개선, 추가, 프로그램 오류 및 버그를 패치하기 위해서 자녀 보호 및 유해 사이트 접속 차단과 같은 실시간 감시 프로그램에서 사용함 메세지 후킹 및 AIP 후킹 기법에 사용 악성 코드 유포 2. 인젝션 방법 - DLL 인젝션을 하기 위해서는 인젝션을 수행하는 코드(DLL 인젝터)와 인젝션 코드가 필요하다. - 인젝션 코드가 독립적인 코드를 수행할 경우 하나의 별도 프로그램을 내부에 추가하여 동작한다. - 만약, .. 2022. 9. 13.
[1-10] 패킹&언패킹 분석 도구 : exeinfope, PEview, upx, OllyDbg 1. UPX 운영 체제에서 사용하는 실행 파일 압축/해지 프로그램 대략 60% 정도의 압축율을 제공한다. 2. 'Packing_1.exe' 파일 UPX 패킹 1) upx을 이용하여 'Packing_1.exe' 파일을 'Packing_1_pack.exe'으로 패킹한다. upx Packing_1.exe -o Packing_1_pack.exe 2) 'Exeinfope'를 이용하여 패킹/언패킹 유무를 확인한다. 3) 'PEview'를 이용하여 패킹/언패킹 PE 구조를 확인한다. - 원본 파일 -> SECTION .rdata -> IAT - 패킹 파일 -> SECTION . rsrc -> IAT (DLL/함수 전체 목록 확인 불가능) - 원본.. 2022. 9. 13.
[1-9] PE 파일 분석(API&DLL) 분석 파일 : user32.dll, lock_1.exe, lock_2.exe, lock_3_import.ext, lock_3_export.dll 분석 도구 : VS2008, PEview, CFF Explorer, Dependency Walker 1. API Application Programming Interface 운영체제, 프로그램 언어가 응용 프로그램에서 사용할 수 있도록 기능을 제공하는 인터페이스(함수) MSDN 문서 참조 2. 컴파일 모든 헤더와 소스 파일 내용을 합쳐서 하나의 기계어 코드를 생성하는 기능을 수행한다. 소스 코드에 오류가 있는지를 검사한다. 3. DLL Dynamic Linked Library 여러 프로그램에서 동시에 사용할 수 있는 코드, 데이터, 함수를 포함한 라이브러리이다... 2022. 9. 13.
[1-8] PE 파일 분석(IAT&Pre Binding) 1. IAT(Import Address Table) 'GetStartupInfoA' 함수 호출 주소값 찾기 DLL 파일이 메모리 상에 로드되는 주소값을 갖고 있는 테이블이며, 암시적 링킹에서 사용한다. 'calc(ASLR X).exe'를 올리디버거로 오픈하여 코드창에서 '0x01012D89' 주소로 이동하여 'GetStartupInfoA' 함수 주소(0x0100114C)를 확인한다. 메모리창에서 '0x0100114C'로 이동하여 저장된 주소값을 확인한다. 10 1E 46 76 -> 0x76461E10 'KERNEL32.dll'의 'GetStartupInforA' 함수를 호출할때, 직접 호출하지 않고 PE 로더가 프로그램 실행시 '0x0100114C' 주소에 저장된 함수 주소 값(0x76461E10)을 갖.. 2022. 9. 13.
[1-7] PE 파일 분석(PE 재배치) 1. PE 재배치 실행 파일이 로드될때 ImageBase에 다른 실행 파일이 로드되어 있다면, 중첩되는 문제가 발생된다. 이런 문제를 해결하기 위해서 로더는 ASLR 기능에 의해서 다른 주소를 찾아서 해당 주소로 실행 파일을 로드한다. 이때, 로드되는 주소가 변경되면 절대 주소 값을 변경된 주소로 수정되어야 한다. 이렇게 변경된 주소 정보를 '.reloc' 섹션에 저장하여 다른 실행 프로그램과 중첩되지 않도록 동작한다. 즉, PE 재배치는 프로그램에 하드코딩된 메모리 주소를 현재 로딩된 주소에 맞게 수정해주는 기능을 의미한다. DLL 파일이 로드될때 이미 그 주소에 다른 DLL이 로드된 경우, PE 재배치를 통해서 다른 주소에 로드된다. 2. PE 재배치 위치 확인 PE 재배치 위치를 확인하려면, 다음과.. 2022. 9. 13.