보안 공부 3일차 — CMD와 PowerShell, 명령어로 Windows 다뤄보기
보안 공부 3일차.
1일차에는 컴퓨터의 기본 구조와 Process, PID를 공부했고,
2일차에는 Windows의 주요 폴더, 사용자 권한, UAC, Service, Registry, PATH를 공부했다.
오늘은 Windows를 명령어로 직접 다루는 방법을 공부한다.
보안을 공부하다 보면 GUI보다 CLI를 사용할 일이 많다.
예를 들어 다음과 같은 작업을 명령어로 할 수 있다.
- 현재 위치 확인
- 파일과 폴더 확인
- 실행 중인 Process 확인
- 사용자 확인
- 네트워크 정보 확인
- 특정 프로그램 위치 찾기
오늘은 공격 도구를 사용하는 것이 아니라, Windows에서 기본 명령어를 읽고 사용할 수 있는 능력을 만드는 것이 목표다.
1. GUI와 CLI
컴퓨터를 사용하는 방법은 크게 두 가지로 볼 수 있다.
GUI
GUI는 Graphical User Interface의 약자다.
우리가 평소 Windows를 사용할 때처럼 마우스로 아이콘과 버튼을 클릭하는 방식이다.
예를 들면:
- 파일 탐색기
- 작업 관리자
- 설정
- 제어판
등이 GUI 방식이다.
CLI
CLI는 Command Line Interface의 약자다.
명령어를 직접 입력하여 컴퓨터를 조작하는 방식이다.
예:
dir
tasklist
whoami
내가 이해한 내용
GUI는 화면에서 마우스로 조작하는 방식이고, CLI는 명령어를 직접 입력해서 시스템을 조작하는 방식이다.
2. Shell이란?
CLI를 공부하면 Shell이라는 용어를 만나게 된다.
Shell은 사용자가 입력한 명령어를 받아 운영체제에 전달하고 결과를 보여주는 프로그램이라고 볼 수 있다.
Windows에서는 대표적으로 다음 두 가지를 사용할 수 있다.
CMD
PowerShell
큰 흐름은 다음과 같다.
사용자
↓
명령어 입력
↓
Shell
↓
Operating System
↓
결과 출력
내가 이해한 내용
Shell은 사용자가 입력한 명령어를 해석하고 운영체제와 연결해주는 환경이다.
3. CMD란?
CMD는 Windows의 전통적인 명령 프롬프트다.
정식 이름은:
Command Prompt
이다.
Windows 검색창에서 다음을 검색하면 실행할 수 있다.
cmd
실행하면 이런 형태의 화면을 볼 수 있다.
C:\Users\사용자이름>
여기서 명령어를 입력한다.
예:
dir
4. PowerShell이란?
PowerShell도 Windows에서 사용하는 Shell이다.
CMD보다 더 다양한 기능을 제공하며 Windows 관리와 자동화에서도 많이 사용된다.
Windows 검색에서:
PowerShell
을 검색해서 실행할 수 있다.
PowerShell에서는 이런 형태의 명령어를 사용할 수 있다.
Get-Process
현재 실행 중인 Process를 확인하는 명령이다.
CMD의:
tasklist
와 비슷한 목적의 작업을 할 수 있다.
오늘은 PowerShell의 복잡한 기능까지 공부하지 않고,
CMD와 PowerShell은 둘 다 Windows에서 명령어를 사용하기 위한 환경이다.
정도로 이해한다.
5. 현재 위치 확인하기
CLI를 사용할 때 가장 먼저 알아야 하는 것은 내가 지금 어느 폴더에 있는지다.
PowerShell에서는:
pwd
를 입력할 수 있다.
결과 예:
Path
----
C:\Users\Kim
pwd는 현재 위치를 확인하는 명령이다.
CMD에서는 프롬프트 자체에 현재 경로가 표시된다.
예:
C:\Users\Kim>
핵심 개념
현재 내가 위치한 폴더를 Current Directory, 즉 현재 디렉터리라고 한다.
6. 파일과 폴더 목록 확인하기
현재 폴더 안에 어떤 파일과 폴더가 있는지 확인해본다.
CMD와 PowerShell 모두 다음 명령을 사용할 수 있다.
dir
결과로 현재 위치에 있는 파일과 폴더 목록을 볼 수 있다.
예:
Desktop
Documents
Downloads
Pictures
내가 이해한 내용
dir은 현재 폴더에 어떤 파일과 폴더가 있는지 확인하는 명령이다.
7. 폴더 이동하기
폴더를 이동할 때 사용하는 대표적인 명령어가 있다.
cd
cd는 Change Directory의 약자다.
예를 들어 현재 위치가:
C:\
이고 Users 폴더로 이동하고 싶다면:
cd Users
를 입력한다.
그러면:
C:\Users>
로 이동한다.
8. 상위 폴더로 이동하기
현재 폴더의 한 단계 위로 이동하려면 다음을 입력한다.
cd ..
예를 들어:
C:\Users\Kim\Downloads
에서:
cd ..
를 실행하면:
C:\Users\Kim
으로 이동한다.
..은 상위 Directory를 의미한다.
9. 절대 경로와 상대 경로
파일 경로에도 두 가지 개념이 있다.
Absolute Path
절대 경로는 처음부터 전체 위치를 지정한다.
예:
C:\Users\Kim\Downloads
현재 내가 어디에 있든 위치가 명확하다.
Relative Path
상대 경로는 현재 위치를 기준으로 경로를 표현한다.
현재 위치가:
C:\Users\Kim
이라면:
cd Downloads
라고만 입력해도 된다.
내가 이해한 내용
절대 경로는 전체 위치를 표시하고, 상대 경로는 현재 내가 있는 위치를 기준으로 경로를 표현한다.
10. 폴더 만들어보기
새로운 폴더를 만들 때는 다음 명령을 사용할 수 있다.
mkdir
예를 들어:
mkdir security-study
를 실행하면 현재 위치에 다음 폴더가 만들어진다.
security-study
그다음:
cd security-study
를 입력해서 해당 폴더로 이동할 수 있다.
11. 화면 정리하기
CLI를 사용하다 보면 화면에 명령 결과가 계속 쌓인다.
화면을 정리할 때는 다음 명령을 사용한다.
cls
화면에 출력된 내용이 지워지고 깨끗한 화면에서 다시 시작할 수 있다.
12. 파일 내용 확인하기
텍스트 파일의 내용을 CMD에서 확인할 수도 있다.
예를 들어 현재 위치에:
test.txt
라는 파일이 있다면:
type test.txt
를 입력한다.
그러면 텍스트 파일의 내용이 화면에 출력된다.
내가 이해한 내용
type 명령은 텍스트 파일 안의 내용을 CLI에서 바로 확인할 때 사용할 수 있다.
13. 실행 중인 Process 확인하기
Day 1에서 작업 관리자를 이용해 Process를 확인했다.
이번에는 CMD에서 확인해본다.
tasklist
결과에는 다음과 같은 정보가 표시된다.
Image Name
PID
Session Name
Memory Usage
예:
chrome.exe 8124
explorer.exe 4520
notepad.exe 10324
여기서 Day 1에서 공부한 PID가 다시 등장한다.
내가 이해한 내용
tasklist는 현재 Windows에서 실행 중인 Process와 PID를 확인할 수 있는 명령이다.
14. 특정 Process 찾기
Process가 너무 많다면 특정 이름이나 PID를 검색할 수 있다.
예를 들어 Chrome만 찾고 싶다면:
tasklist | findstr chrome
를 사용할 수 있다.
findstr은 결과에서 특정 문자열을 찾는 명령이다.
여기서 | 기호도 처음 등장한다.
이 기호를 Pipe라고 부른다.
예:
tasklist | findstr chrome
의 의미를 간단하게 표현하면:
tasklist 결과
↓
findstr에 전달
↓
chrome이 들어간 줄만 출력
오늘은 Pipe를 깊게 공부하지 않고,
앞 명령의 결과를 다음 명령에 넘길 수 있다.
정도로 이해하면 된다.
15. 내가 누구인지 확인하기
현재 Windows에서 어떤 사용자로 로그인되어 있는지 CLI에서도 확인할 수 있다.
whoami
예:
mycomputer\kim
Day 2에서 공부했던 User와 Permission 개념과 연결된다.
보안에서는 어떤 명령이나 Process가 어떤 사용자 권한으로 실행되고 있는지 확인하는 것이 중요하다.
16. 실행 파일 위치 찾기
다음 명령어를 사용할 수 있다.
where
예:
where notepad
또는 Python이 설치되어 있다면:
where python
Windows가 어떤 실행 파일을 찾아서 실행하고 있는지 경로를 확인할 수 있다.
이 내용은 Day 2에서 공부했던 PATH와 연결된다.
예를 들어:
where python
을 입력했을 때 Python 실행 파일의 경로가 나타난다면, Windows가 해당 경로에서 Python을 찾았다는 뜻이다.
17. 명령어의 기본 구조
CLI 명령어는 보통 다음과 같은 구조를 가진다.
명령어 + 옵션 + 대상
예를 들어:
taskkill /PID 1234
를 구조적으로 보면:
taskkill
→ 명령어
/PID
→ 옵션
1234
→ 대상 값
오늘은 실제 Process 종료 실습은 하지 않고 구조만 이해한다.
명령어 공부에서 중요한 용어는 다음과 같다.
Command
Argument
Option
Parameter
각 도구마다 사용 방식이 조금씩 다를 수 있다.
18. 도움말 보는 습관
명령어를 전부 외울 필요는 없다.
CMD 명령어는 도움말을 확인할 수 있다.
예:
tasklist /?
또는:
dir /?
PowerShell에서도 명령에 대한 도움말을 확인하는 기능이 있다.
예:
Get-Help Get-Process
보안 공부를 하면서 가장 중요한 습관 중 하나는:
명령어를 무조건 외우는 것보다 도움말과 문서를 읽는 것
이다.
19. 오늘의 실습 1 — 폴더 이동하기
CMD 또는 PowerShell을 실행한다.
먼저 현재 위치를 확인한다.
PowerShell:
pwd
현재 파일 목록 확인:
dir
그다음 Documents 또는 Downloads 폴더로 이동해본다.
예:
cd Downloads
다시 상위 폴더로 이동한다.
cd ..
실습 결과
시작 위치:
이동한 위치:
cd .. 실행 후 위치:
20. 오늘의 실습 2 — 공부용 폴더 만들기
사용자 폴더 안에서 다음과 같은 폴더를 하나 만들어본다.
mkdir security-study
이동한다.
cd security-study
현재 위치를 확인한다.
pwd
결과
내가 만든 폴더 경로:
21. 오늘의 실습 3 — Process 확인하기
CMD에서:
tasklist
을 실행한다.
현재 실행 중인 Process 중 3개를 골라 기록한다.
Process 이름PID내가 아는 프로그램인가?
22. 오늘의 실습 4 — 특정 Process 검색하기
Chrome을 사용하고 있다면 다음을 실행한다.
tasklist | findstr chrome
Chrome이 없다면 다른 Process 이름을 사용해도 된다.
예:
tasklist | findstr Teams
확인한 결과
검색한 Process:
검색 결과:
23. 오늘의 실습 5 — 사용자 확인하기
다음 명령을 입력한다.
whoami
결과
내 결과:
이 결과가 Day 2에서 확인했던 Windows 사용자와 어떻게 연결되는지도 생각해본다.
24. 오늘의 실습 6 — 프로그램 위치 찾기
다음 명령을 실행한다.
where notepad
가능하다면:
where python
도 실행한다.
Python이 설치되어 있지 않다면 결과가 나오지 않아도 된다.
결과
notepad 위치:
python 위치:
25. 오늘의 실습 7 — 도움말 읽어보기
다음을 실행한다.
tasklist /?
스크롤을 내려보며 어떤 옵션들이 있는지 살펴본다.
전부 이해할 필요는 없다.
그중 하나를 골라 적어본다.
내가 발견한 옵션:
이 옵션의 역할:
26. 오늘 내용을 보안과 연결해보기
보안 담당자가 한 PC를 조사한다고 생각해보자.
GUI를 하나하나 열지 않고도 CLI를 이용하면 빠르게 정보를 확인할 수 있다.
예를 들면:
whoami
현재 사용자 확인.
tasklist
현재 Process 확인.
where 프로그램명
실행 파일 위치 확인.
즉 이런 질문에 답할 수 있다.
나는 지금 어떤 사용자 권한인가?
어떤 Process가 실행되고 있는가?
해당 Process의 PID는 무엇인가?
실행 파일은 어디에 있는가?
Day 1~3의 내용이 여기서 연결된다.
Program
↓ 실행
Process
↓ PID 부여
Windows가 관리
↓
User / Permission
↓
CLI를 이용해 상태 확인
27. GUI와 CLI를 함께 사용할 수 있어야 한다
GUI와 CLI 중 하나만 좋은 것은 아니다.
예를 들어 Process를 확인할 때:
작업 관리자
를 사용할 수도 있고:
tasklist
를 사용할 수도 있다.
중요한 것은 같은 시스템 정보를 여러 방법으로 확인할 수 있다는 것이다.
보안 업무에서는 상황에 따라 GUI보다 CLI가 더 빠른 경우도 있고, CLI 사용만 가능한 경우도 있을 수 있다.
그래서 앞으로는 명령어를 봤을 때 겁먹지 않는 것이 목표다.
Day 3 핵심 키워드
오늘 알아야 할 용어를 정리하면 다음과 같다.
GUI
그래픽 화면과 마우스 등을 이용해 컴퓨터를 조작하는 방식.
CLI
명령어를 입력해 컴퓨터를 조작하는 방식.
Shell
사용자의 명령을 받아 운영체제와 상호작용할 수 있게 하는 프로그램.
CMD
Windows에서 사용할 수 있는 전통적인 Command Line 환경.
PowerShell
Windows 관리와 자동화 등에 사용할 수 있는 강력한 Shell.
Directory
파일이나 다른 Directory를 저장하는 폴더.
Path
파일이나 폴더가 위치한 경로.
Absolute Path
전체 위치를 표시한 경로.
Relative Path
현재 위치를 기준으로 표현한 경로.
Command
컴퓨터에 수행할 작업을 지시하는 명령.
Option
명령의 동작 방식을 지정하는 값.
Pipe
한 명령의 출력 결과를 다른 명령으로 전달하는 기능.
오늘 꼭 기억할 명령어
dir
현재 폴더의 파일 및 폴더 확인.
cd
Directory 이동.
cd ..
상위 Directory 이동.
mkdir
폴더 생성.
cls
화면 정리.
type
텍스트 파일 내용 확인.
tasklist
실행 중인 Process 확인.
whoami
현재 사용자 확인.
where
실행 파일 위치 확인.
findstr
문자열 검색.
오늘의 최종 질문
자료를 보지 않고 답해본다.
1. GUI와 CLI의 차이는?
2. Shell은 어떤 역할을 하는가?
3. CMD와 PowerShell은 무엇인가?
4. dir 명령어는 무엇을 하는가?
5. cd는 무엇을 의미하는가?
6. cd ..은 어떤 작업을 하는가?
7. 절대 경로와 상대 경로의 차이는?
8. tasklist를 사용하는 이유는?
9. whoami를 사용하면 무엇을 알 수 있는가?
10. where 명령어는 무엇을 확인하는가?
11. 다음 명령의 |는 어떤 역할을 하는가?
tasklist | findstr chrome
12. 보안 공부에서 CLI 사용법을 알아야 하는 이유는 무엇이라고 생각하는가?
Day 3 공부를 마치며
오늘은 Windows를 마우스가 아닌 명령어를 통해 직접 확인하고 조작하는 방법을 공부했다.
오늘 가장 중요한 흐름은 다음과 같다.
사용자
↓
명령어 입력
↓
CMD / PowerShell
↓
Windows
↓
파일 / Process / 사용자 / 시스템 정보
아직 명령어를 전부 외울 필요는 없다.
오늘 목표는:
명령어가 나와도 당황하지 않기
현재 위치를 확인할 수 있기
폴더를 이동할 수 있기
Process를 확인할 수 있기
현재 사용자를 확인할 수 있기
도움말을 확인할 수 있기
정도다.
보안 공부에서는 앞으로 수많은 명령어를 사용하게 되겠지만, 결국 기본은 내가 지금 어디에 있고, 어떤 사용자이며, 어떤 Process와 파일이 존재하는지 확인하는 것에서 시작한다.
