728x90
반응형

보안 공부 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와 파일이 존재하는지 확인하는 것에서 시작한다.

728x90
반응형
728x90
반응형

Day 1. 개인사업자란 무엇인가?

웹앱을 하나 만들었다고 가정해보자.

처음에는 그냥 개인 프로젝트였다.

내가 필요해서 만들었거나, 재미로 만들었거나, 포트폴리오에 넣으려고 만든 서비스일 수도 있다.

그런데 어느 순간 이런 생각이 든다.

“이거 사람들이 돈을 내고 사용할 수도 있지 않을까?”

그래서 무료 회원과 유료 회원을 나누고, 월 4,900원짜리 요금제를 만들고, 카드 결제 기능을 붙인다.

그리고 처음으로 누군가가 4,900원을 결제한다.

이 순간부터 상황이 꽤 많이 달라진다.

나는 이제 단순히 프로그램을 만든 개발자만이 아니다.

서비스를 제공하고 그 대가로 돈을 받는 사람, 즉 사업을 하는 사람이 된다.

웹서비스를 실제로 운영해보려고 한다면 개발뿐 아니라 이런 변화가 무엇을 의미하는지도 알아야 한다.

그래서 가장 먼저 공부해야 할 것이 바로 개인사업자다.


1. 사업자란 무엇일까?

개인사업자를 이해하려면 먼저 '사업자'라는 말부터 이해해야 한다.

일상에서는 보통 이런 사람들을 사업자라고 생각한다.

  • 음식점을 운영하는 사람
  • 쇼핑몰을 운영하는 사람
  • 카페 사장
  • 회사를 운영하는 사람

하지만 웹서비스도 본질적으로는 크게 다르지 않다.

국세청은 사업상 독립적으로 재화 또는 용역을 공급하는 사람은 사업자등록을 해야 한다고 안내한다.

여기서 중요한 단어가 세 개 있다.

사업상, 독립적으로, 재화 또는 용역을 공급한다는 것이다.

조금 어렵게 느껴질 수 있으니 하나씩 살펴보자.


2. '사업상'이라는 것은 무슨 뜻일까?

친구에게 중고 키보드를 한 번 팔았다고 생각해보자.

10만 원을 받고 키보드를 넘겼다고 해서 곧바로 키보드 판매업자가 되는 것은 아니다.

반면 키보드를 계속 사와서 인터넷에서 반복적으로 판매한다면 이야기가 달라진다.

단순히 내 물건을 한 번 처분한 것이 아니라 계속적인 수익 활동이 되기 때문이다.

웹서비스도 마찬가지다.

예를 들어 내가 친구에게 부탁을 받고 간단한 프로그램을 만들어주고 5만 원을 받은 것과,

웹사이트를 만들어놓고 누구나 가입해서 매달 5,900원을 내면 사용할 수 있게 한 것은 성격이 다르다.

후자는 처음부터 다음과 같은 구조를 가지고 있다.

사용자 모집
→ 서비스 제공
→ 결제
→ 반복적인 서비스 이용
→ 지속적인 매출

즉, 사업의 형태를 갖추고 있다.

그래서 단순히

“얼마를 벌었느냐?”

만 가지고 사업 여부를 판단하는 것은 적절하지 않다.

오히려

어떤 활동을 계속적이고 반복적으로 하고 있는가?

를 보는 것이 중요하다.


3. '독립적으로' 사업한다는 것은?

다음으로 중요한 말이 독립적으로다.

예를 들어 내가 어떤 회사에 취업해서 개발자로 일한다고 해보자.

회사가 나에게 월급을 지급한다.

나는 회사의 지시에 따라 일을 하고 그 대가로 급여를 받는다.

이 경우 나는 그 회사의 서비스를 판매하는 사업자가 아니라 근로자다.

반면 내가 직접 웹서비스를 만들고,

  • 가격을 내가 정하고
  • 서비스 내용을 내가 정하고
  • 사용자에게 직접 제공하고
  • 운영 비용도 내가 부담하고
  • 사업에서 손실이 나도 내가 책임진다면

나는 독립적으로 사업을 운영하고 있는 것이다.

이 차이는 생각보다 중요하다.

개인사업자는 단순히 '돈을 받는 사람'이 아니라 자기 책임으로 사업을 운영하는 사람에 가깝다.


4. 재화와 용역

법이나 세금 공부를 하다 보면 계속 등장하는 단어가 있다.

재화와 용역이다.

쉽게 말하면 다음처럼 이해하면 된다.

재화

물건이다.

예를 들어

  • 노트북
  • 옷
  • 가구
  • 음식
  • 책

등이 있다.

용역

서비스를 제공하는 것이다.

예를 들어

  • 디자인
  • 개발
  • 컨설팅
  • 교육
  • 구독 서비스

등이 있다.

웹앱이나 SaaS는 일반적으로 물건을 넘겨주는 형태라기보다는 서비스를 제공하는 사업에 가깝다.

예를 들어 월 9,900원을 내면 어떤 기능을 계속 사용할 수 있게 해주는 서비스라면 사용자는 물건을 산 것이 아니다.

서비스를 이용할 권리를 얻은 것이다.

그래서 앞으로 웹서비스 사업을 공부하면서는 용역이라는 단어를 자주 만나게 된다.


5. 개인사업자는 무엇인가?

이제 본론으로 들어가보자.

개인사업자는 말 그대로 개인이 자신의 이름과 책임으로 사업을 운영하는 형태라고 이해하면 된다.

예를 들어 내가 ExampleApp이라는 서비스를 만든다고 하자.

개인사업자로

728x90
반응형
728x90
반응형

보안 공부 2일차 — Windows는 어떻게 구성되어 있을까?

보안 공부 2일차.

1일차에는 CPU, RAM, SSD, 운영체제, Kernel, Process, PID처럼 컴퓨터가 프로그램을 실행하는 기본 구조를 공부했다.

오늘은 그중에서도 내가 실제로 사용하는 Windows 운영체제의 구조를 조금 더 자세히 살펴보려고 한다.

보안을 공부하다 보면 다음과 같은 표현이 자주 나온다.

  • 시스템 파일
  • 사용자 계정
  • 관리자 권한
  • 서비스
  • 환경 변수
  • Registry
  • Program Files
  • AppData

처음에는 각각 따로 떨어진 개념처럼 보이지만, 사실 모두 Windows가 프로그램과 사용자를 관리하기 위한 구조다.

오늘의 목표는 Windows를 단순히 "켜서 사용하는 운영체제"가 아니라 파일, 사용자, 권한, 프로그램을 관리하는 시스템으로 보는 것이다.


1. Windows의 기본 폴더 구조

Windows가 설치된 PC에서는 일반적으로 C: 드라이브가 시스템 드라이브로 사용된다.

파일 탐색기에서 C:\를 열면 여러 폴더를 볼 수 있다.

대표적으로 다음 폴더들이 있다.

C:\Windows
C:\Program Files
C:\Program Files (x86)
C:\Users

각 폴더는 서로 다른 역할을 한다.


2. C:\Windows

C:\Windows는 Windows 운영체제와 관련된 파일들이 저장되는 중요한 폴더다.

예를 들면 운영체제가 사용하는 프로그램, 설정, 라이브러리 등이 들어 있다.

C:\Windows

이 폴더 안에는 다시 다양한 하위 폴더가 존재한다.

그중 보안 공부를 하면서 자주 만나게 되는 폴더가 있다.

C:\Windows\System32

System32

System32에는 Windows가 사용하는 중요한 실행 파일과 시스템 구성 요소가 많이 저장되어 있다.

예를 들어 Windows의 여러 기본 명령어도 이곳과 관련되어 있다.

대표적인 파일의 예는 다음과 같다.

cmd.exe
notepad.exe
ipconfig.exe

다만 System32 안에는 Windows 동작에 중요한 파일이 많기 때문에 함부로 파일을 삭제하거나 변경하면 안 된다.

내가 이해한 내용

C:\Windows는 Windows 운영체제 자체와 관련된 파일이 있는 곳이고, 그 안의 System32에는 Windows가 사용하는 중요한 실행 파일과 시스템 구성 요소가 많이 들어 있다.


3. Program Files

Windows에서 프로그램을 설치하면 흔히 다음 위치에 저장된다.

C:\Program Files

또는

C:\Program Files (x86)

일반적으로 다음과 같이 이해할 수 있다.

Program Files
→ 주로 64bit 프로그램

Program Files (x86)
→ 주로 32bit 프로그램

예를 들어 어떤 프로그램을 설치했다면 이런 구조를 볼 수 있다.

C:\Program Files\프로그램이름\

그 안에는 프로그램 실행 파일이나 DLL 같은 파일들이 있을 수 있다.

내가 이해한 내용

Program Files는 설치된 프로그램의 파일이 저장되는 대표적인 위치다. Program Files와 Program Files (x86)는 프로그램의 64bit와 32bit 구분과 관련이 있다.


4. Users 폴더

Windows는 사용자별로 데이터를 따로 관리한다.

대표적인 경로가 다음과 같다.

C:\Users

안으로 들어가 보면 사용자별 폴더가 있다.

예를 들면:

C:\Users\Kim
C:\Users\Admin
C:\Users\User1

각 사용자 폴더 안에는 일반적으로 다음과 같은 폴더가 있다.

Desktop
Documents
Downloads
Pictures
Videos

즉,

C:\Users\사용자이름

은 해당 사용자의 개인 데이터와 설정이 저장되는 중요한 위치다.

내가 이해한 내용

Windows는 사용자마다 별도의 사용자 폴더를 만들고, 바탕화면이나 다운로드, 문서 같은 개인 파일을 사용자별로 관리한다.


5. AppData

사용자 폴더 안에는 중요한 폴더가 하나 더 있다.

AppData

일반적으로 다음 위치에 있다.

C:\Users\사용자이름\AppData

AppData는 기본적으로 숨김 폴더로 설정되어 있을 수 있다.

이곳에는 프로그램이 사용하는 사용자별 설정, 캐시, 임시 데이터 등이 저장된다.

AppData 안에는 대표적으로 다음과 같은 폴더가 있다.

Local
LocalLow
Roaming

오늘은 세 폴더의 정확한 차이까지 외울 필요는 없다.

일단 중요한 것은:

AppData는 프로그램이 사용자별 설정이나 데이터를 저장할 때 자주 사용하는 위치다.

라는 점이다.

보안 공부에서 AppData가 중요한 이유도 있다.

정상 프로그램뿐만 아니라 악성 프로그램 역시 사용자 영역의 특정 폴더에 파일을 저장하려는 경우가 있기 때문이다.

내가 이해한 내용

AppData는 프로그램이 사용자별 설정이나 캐시 같은 데이터를 저장하는 공간이고, 보안 분석에서도 자주 확인하게 되는 위치다.


6. User와 Administrator

Windows에서는 모든 사용자가 같은 권한을 갖는 것은 아니다.

대표적으로 두 가지 개념을 먼저 알아야 한다.

Standard User
Administrator

일반 사용자는 Windows를 사용할 수 있지만 시스템에 큰 영향을 미치는 작업에는 제한이 있을 수 있다.

Administrator는 보다 높은 권한을 가지고 있다.

예를 들어 관리자 권한이 필요한 작업에는 다음과 같은 것이 있을 수 있다.

  • 일부 프로그램 설치
  • 시스템 설정 변경
  • 다른 사용자의 데이터 접근
  • 서비스 설정 변경
  • 시스템 영역 변경

여기서 보안에서 매우 중요한 개념이 등장한다.

Privilege

Privilege는 쉽게 말하면 어떤 작업을 수행할 수 있는 권한이라고 이해할 수 있다.


7. Permission과 Privilege

처음에는 Permission과 Privilege가 비슷하게 느껴질 수 있다.

아주 간단하게 구분하면 다음처럼 이해해볼 수 있다.

Permission

특정 파일이나 폴더 같은 대상에 대해 무엇을 할 수 있는지를 의미한다.

예를 들면:

읽기
쓰기
수정
실행

Privilege

사용자나 프로세스가 시스템에서 특정 작업을 수행할 수 있는 권한과 관련된 개념이다.

예를 들어:

관리자 수준 작업
시스템 설정 변경
특정 시스템 기능 사용

처음에는 완벽히 구분할 필요는 없지만,

Permission
→ 이 파일을 읽거나 수정할 수 있는가?

Privilege
→ 이 사용자 또는 Process가 이런 시스템 작업을 할 수 있는가?

정도로 이해하면 좋다.

내가 이해한 내용

Permission은 특정 파일이나 폴더에 대해 무엇을 할 수 있는지와 관련되고, Privilege는 사용자나 프로세스가 시스템에서 어떤 수준의 작업을 할 수 있는지와 관련된 개념이다.


8. UAC란?

Windows에서 프로그램을 설치하거나 시스템 설정을 변경할 때 다음과 같은 창을 본 적이 있다.

이 앱이 디바이스를 변경할 수 있도록 허용하시겠어요?

이 기능이 UAC(User Account Control)와 관련되어 있다.

UAC는 프로그램이 높은 권한이 필요한 작업을 시도할 때 사용자의 확인을 요구하는 Windows의 보안 기능이다.

쉽게 생각하면 다음과 같다.

프로그램 실행
     ↓
높은 권한 필요
     ↓
UAC 확인
     ↓
사용자가 허용 / 거부

관리자 계정으로 로그인했다고 해서 모든 프로그램이 항상 아무 제한 없이 관리자 권한을 사용하는 것은 아니다.

필요한 경우 권한 상승 과정을 거치게 된다.

내가 이해한 내용

UAC는 프로그램이 시스템에 영향을 줄 수 있는 높은 권한을 필요로 할 때 사용자에게 한 번 더 확인받는 기능이다.


9. Service란?

Windows에서는 화면에 보이지 않지만 계속 실행되고 있는 프로그램들이 있다.

이런 것 중 대표적인 것이 Windows Service다.

Service는 주로 백그라운드에서 실행된다.

예를 들어 다음과 같은 역할을 하는 서비스가 있을 수 있다.

  • 네트워크 기능
  • 업데이트
  • 프린터
  • 보안 프로그램
  • 데이터베이스
  • 서버 프로그램

Windows에서 다음을 실행하면 서비스를 확인할 수 있다.

services.msc

Win + R을 누른 뒤 입력하면 된다.

services.msc

서비스마다 다음과 같은 상태를 볼 수 있다.

Running
Stopped

또 시작 방식도 설정되어 있다.

Automatic
Manual
Disabled

내가 이해한 내용

Service는 사용자가 직접 창을 열지 않아도 Windows 백그라운드에서 계속 특정 기능을 수행하는 프로그램 또는 기능이다.


10. Registry란?

Registry는 Windows에서 프로그램과 시스템의 다양한 설정 정보를 저장하는 데이터베이스와 비슷한 구조다.

예를 들면 다음과 같은 설정들이 Registry와 관련될 수 있다.

  • Windows 설정
  • 프로그램 설정
  • 사용자 설정
  • 실행 관련 설정

Registry를 확인하려면 다음 명령을 사용할 수 있다.

regedit

하지만 Registry는 Windows 동작에 중요한 설정이 들어 있기 때문에 오늘은 보기만 하고 수정하지 않는 것이 좋다.

보안 공부를 하다 보면 나중에 Registry를 통해 자동 실행 설정이나 시스템 변경 흔적 등을 분석하는 경우도 있다.

내가 이해한 내용

Registry는 Windows와 프로그램의 여러 설정 정보를 저장하고 관리하는 중요한 데이터 구조다.


11. Environment Variable

환경 변수, 즉 Environment Variable도 Windows에서 자주 등장한다.

환경 변수는 프로그램이나 운영체제가 참조할 수 있도록 특정 값을 이름으로 저장해두는 방식이다.

대표적인 예가 있다.

TEMP
USERNAME
USERPROFILE
PATH

예를 들어 CMD에서 다음 명령을 입력해볼 수 있다.

echo %USERNAME%

현재 사용자 이름이 출력된다.

또:

echo %USERPROFILE%

을 입력하면 현재 사용자 폴더 경로가 나온다.

예:

C:\Users\Kim

내가 이해한 내용

환경 변수는 Windows나 프로그램이 자주 사용하는 값을 이름으로 저장해놓고 필요할 때 불러올 수 있게 하는 기능이다.


12. PATH란?

환경 변수 중에서도 중요한 것이 PATH다.

CMD에서 다음 명령어를 입력한다고 생각해보자.

notepad

나는 notepad.exe가 어디에 있는지 전체 경로를 적지 않았다.

그런데 Windows는 메모장을 실행한다.

이 과정에서 PATH 환경 변수에 등록된 경로들을 참고해 실행 파일을 찾을 수 있다.

즉 원래는 이런 식의 경로가 필요할 수 있지만:

C:\Windows\System32\프로그램.exe

PATH가 설정되어 있으면:

프로그램.exe

처럼 이름만 입력해서 실행할 수 있다.

내가 이해한 내용

PATH는 Windows가 실행 파일을 찾을 때 확인하는 경로 목록이다. PATH에 등록된 폴더의 프로그램은 전체 경로를 입력하지 않아도 실행할 수 있다.


13. 오늘 직접 해볼 실습

오늘은 단순히 읽는 것보다 내 PC에서 직접 Windows 구조를 확인해본다.

실습 1 — 주요 폴더 확인하기

파일 탐색기에서 다음 경로를 하나씩 열어본다.

C:\Windows

C:\Windows\System32

C:\Program Files

C:\Program Files (x86)

C:\Users

파일을 수정하거나 삭제하지 않고 구조만 확인한다.

확인 결과

내가 직접 확인한 폴더와 눈에 띈 파일 또는 폴더를 기록하기


14. AppData 찾아보기

파일 탐색기 주소창에 직접 다음을 입력한다.

%appdata%

Enter를 누른다.

어떤 위치로 이동하는지 확인한다.

그 다음 주소창에 다음도 입력한다.

%localappdata%

두 경로가 같은지 다른지도 확인한다.

내가 확인한 결과

%appdata% →


%localappdata% →

15. 현재 사용자 확인하기

CMD를 실행한다.

다음 명령을 입력한다.

whoami

현재 로그인되어 있는 사용자를 확인한다.

결과:

내 결과:

이번에는 다음을 입력한다.

echo %USERNAME%

결과:

내 결과:

둘이 어떻게 표시되는지도 비교해본다.


16. 환경 변수 확인하기

CMD에서 다음 명령을 실행한다.

echo %USERPROFILE%

결과:

내 결과:

다음도 확인한다.

echo %TEMP%

결과:

내 결과:

그리고:

echo %PATH%

을 실행한다.

굉장히 긴 경로 목록이 나올 수 있다.

오늘은 하나하나 분석하지 않고 여러 폴더 경로가 등록되어 있다는 것만 확인한다.


17. Service 확인하기

키보드에서:

Win + R

실행창을 연다.

다음 입력:

services.msc

서비스 목록에서 아무 서비스 3개 정도를 골라본다.

Service 이름상태시작 유형

     
     
     

아직 서비스를 중지하거나 설정을 변경하지 않는다.


18. UAC 직접 확인하기

Windows 검색에서:

cmd

를 검색한다.

일반적으로 실행하지 말고 우클릭해서:

관리자 권한으로 실행

을 선택해본다.

UAC 창이 나타나는지 확인한다.

여기서 중요한 것은 CMD 사용 자체가 아니라 일반 실행과 관리자 권한 실행이 다르다는 점을 눈으로 확인하는 것이다.


19. 오늘 배운 내용을 하나로 연결하기

오늘 내용을 전체적으로 연결하면 다음과 같다.

Windows
   ↓
사용자 계정 관리
   ↓
User / Administrator
   ↓
Permission / Privilege
   ↓
Program 실행
   ↓
필요하면 UAC로 권한 상승

파일 측면에서는:

C:\Windows
→ 운영체제 관련 파일

C:\Program Files
→ 설치된 프로그램

C:\Users
→ 사용자별 데이터

AppData
→ 사용자별 프로그램 데이터

그리고 Windows 내부에는:

Service
Registry
Environment Variable
PATH

같은 기능들이 프로그램과 시스템을 관리한다.


20. 이게 보안과 어떤 관계가 있을까?

보안 사고를 조사한다고 생각해보자.

수상한 프로그램이 발견됐다.

그러면 다음과 같은 질문을 할 수 있다.

파일은 어디에 있지?

Program Files에 있나?

AppData에 있나?

어떤 사용자가 실행했지?

관리자 권한으로 실행됐나?

자동 실행 설정이 있나?

Service로 등록됐나?

Registry를 변경했나?

PATH를 변경했나?

Day 1에서 배운 질문이:

무슨 Process가 실행되고 있지?

였다면,

Day 2부터는 조금 더 확장된다.

그 Process는 어디에서 왔고,
누구의 권한으로 실행되며,
Windows의 어떤 설정을 사용하고 있는가?

이런 식으로 시스템을 바라보는 것이 보안 공부의 기초가 된다.


Day 2 핵심 정리

C:\Windows

Windows 운영체제와 관련된 주요 시스템 파일이 저장되는 위치다.

System32

Windows가 사용하는 중요한 실행 파일과 시스템 구성 요소가 많이 있는 폴더다.

Program Files

설치된 프로그램의 파일이 주로 저장되는 위치다.

Users

Windows 사용자별 파일과 데이터가 저장되는 위치다.

AppData

프로그램의 사용자별 설정, 캐시, 데이터 등이 저장되는 위치다.

Administrator

일반 사용자보다 높은 수준의 시스템 권한을 가진 사용자 또는 권한과 관련된 개념이다.

Permission

특정 파일이나 폴더 등에 대해 읽기, 쓰기, 실행 등의 작업을 할 수 있는지를 나타낸다.

Privilege

사용자나 Process가 시스템에서 특정 작업을 수행할 수 있는 권한이다.

UAC

프로그램이 높은 권한을 필요로 할 때 사용자의 확인을 요구하는 Windows 보안 기능이다.

Service

Windows 백그라운드에서 특정 기능을 수행하는 프로그램 또는 시스템 구성 요소다.

Registry

Windows와 프로그램의 각종 설정 정보를 저장하는 구조다.

Environment Variable

운영체제와 프로그램이 사용할 값을 이름과 연결해 저장하는 기능이다.

PATH

Windows가 실행 파일을 찾을 때 확인하는 경로 목록이다.


오늘의 최종 질문

자료를 보지 않고 한 번 답해본다.

1. C:\Windows와 C:\Users의 역할 차이는?

2. Program Files는 어떤 폴더인가?

3. AppData에는 어떤 데이터가 저장되는가?

4. 일반 사용자와 Administrator의 차이는?

5. Permission과 Privilege는 어떻게 다른가?

6. UAC는 왜 필요한가?

7. Windows Service란 무엇인가?

8. Registry는 어떤 역할을 하는가?

9. Environment Variable은 무엇인가?

10. PATH가 없다면 프로그램 실행이 왜 불편해질 수 있는가?


Day 2 공부를 마치며

오늘은 Windows에서 파일과 프로그램이 어디에 저장되는지, 그리고 사용자와 권한이 어떻게 관리되는지를 공부했다.

가장 기억하고 싶은 구조는 다음과 같다.

Windows
│
├─ C:\Windows
│    └─ 운영체제
│
├─ C:\Program Files
│    └─ 설치 프로그램
│
└─ C:\Users
     └─ 사용자별 데이터
          └─ AppData

그리고 Windows에서는 단순히 파일 위치뿐 아니라:

User
Permission
Privilege
UAC
Service
Registry
Environment Variable
PATH

같은 개념을 통해 시스템을 관리하고 있다는 점을 알게 됐다.

보안을 공부할 때는 결국

"무엇이 실행됐는가?"

뿐만 아니라

"어디에서 실행됐고, 어떤 사용자와 권한으로 실행됐으며, 시스템에 무엇을 변경했는가?"

까지 확인해야 한다는 점도 조금씩 이해하기 시작했다.

728x90
반응형

'쓰윽터디 > 정보 보안' 카테고리의 다른 글

[IT Security] 정보 보안 공부 하기 Day.01  (0) 2026.09.26
728x90
반응형

보안 공부를 시작했다.

아직 네트워크, 해킹, 취약점 같은 것은 아무것도 모르는 상태라서 우선 가장 기본적인 “컴퓨터가 어떻게 동작하는가?”부터 공부해보기로 했다.

보안을 공부하다 보면 프로세스, 메모리, 커널, PID 같은 용어가 계속 등장한다고 한다.

그래서 첫날에는 아래 내용을 이해하는 것을 목표로 잡았다.

  • CPU는 무슨 일을 하는가?
  • RAM은 왜 필요한가?
  • SSD와 RAM은 무엇이 다른가?
  • 운영체제는 왜 필요한가?
  • Kernel은 무엇인가?
  • Program과 Process의 차이는 무엇인가?
  • PID는 무엇인가?
  • 프로그램을 실행하면 컴퓨터 내부에서는 어떤 일이 일어나는가?

1. Hardware와 Software

먼저 컴퓨터를 구성하는 것은 크게 Hardware와 Software로 나눌 수 있다.

Hardware

Hardware는 실제로 존재하는 물리적인 장치를 의미한다.

대표적으로 다음과 같은 것들이 있다.

  • CPU
  • RAM
  • SSD
  • HDD
  • GPU
  • Network Card

즉, 컴퓨터를 열었을 때 실제로 볼 수 있는 부품들이 대부분 Hardware에 해당한다.

Software

Software는 컴퓨터에서 실행되는 프로그램이나 운영체제를 의미한다.

예를 들어 다음과 같다.

  • Windows
  • Chrome
  • Microsoft Teams
  • 게임
  • PowerShell

컴퓨터의 구조를 아주 단순하게 표현하면 다음과 같다.

사용자
 ↓
Software
 ↓
Operating System
 ↓
Hardware

사용자가 Chrome 같은 프로그램을 사용하면 프로그램이 직접 CPU나 RAM을 마음대로 사용하는 것이 아니라, 중간에서 운영체제가 이를 관리한다.

오늘 내가 이해한 내용

여기에 Hardware와 Software의 차이를 내 말로 정리해보기
> 하드웨어는 눈에 보이는 물리적인 것, 소프트웨어는 컴퓨터 속에 있는 프로그램들

 


2. CPU란?

CPU는 Central Processing Unit의 약자다.

흔히 컴퓨터의 두뇌라고 표현하지만, 좀 더 정확하게 표현하면 컴퓨터의 명령어를 실행하는 장치라고 볼 수 있다.

프로그램에는 컴퓨터가 수행해야 할 수많은 명령들이 들어 있다.

예를 들면,

숫자를 더한다.
문자를 비교한다.
파일을 읽는다.
데이터를 처리한다.

와 같은 작업이다.

CPU가 이런 명령들을 실제로 처리한다.

CPU와 관련된 주요 용어

CPU

컴퓨터의 명령을 처리하는 장치.

Core

CPU 내부에서 실제 작업을 처리하는 단위.

Thread

작업이 처리되는 실행 흐름.

Instruction

CPU가 처리하는 명령.

아직 Core와 Thread의 내부 구조까지 공부할 필요는 없지만, 이후 프로그램이나 서버 성능을 볼 때 계속 등장하는 용어이기 때문에 기억하자.

내가 이해한 CPU

CPU가 어떤 역할을 하는지 내 말로 설명해보기
> CPU는 컴퓨터의 명령어를 실행하는 장치


3. RAM이란?

RAM은 Random Access Memory의 약자다.

컴퓨터에서 현재 실행하고 있는 프로그램이나 필요한 데이터를 임시로 저장하는 공간이다.

예를 들어 Chrome이 컴퓨터의 SSD에 설치되어 있다고 하자.

Chrome을 실행하면 대략 다음과 같은 일이 일어난다.

SSD

Chrome 프로그램 저장
     ↓

RAM

Chrome 실행에 필요한 데이터 적재
     ↓

CPU

명령 처리

아주 단순하게 표현하면 다음처럼 기억할 수 있다.

SSD = 보관 공간

RAM = 작업 공간

CPU = 작업 처리

RAM의 특징

RAM에 저장된 데이터는 컴퓨터의 전원이 꺼지면 사라진다.

이러한 메모리를 Volatile Memory, 즉 휘발성 메모리라고 한다.

내가 이해한 RAM

RAM이 왜 필요한지 내 말로 설명해보기
> 사용자의 작업을 빠르게 수행할 수 있도록 임시 작업대 역할을 하기 때문에 필요하다.


4. SSD와 RAM은 무엇이 다를까?

SSD 역시 데이터를 저장하는 공간이다.

하지만 RAM과 목적이 다르다.

SSD에는 다음과 같은 데이터들이 저장될 수 있다.

  • Windows
  • 프로그램
  • 사진
  • 문서
  • 게임
  • 동영상

SSD에 저장된 데이터는 컴퓨터의 전원을 꺼도 사라지지 않는다.

반면 RAM에 올라간 데이터는 전원을 끄면 사라진다.

따라서 아주 단순하게 비교하면 다음과 같다.

구분 RAM SSD
역할 현재 작업에 필요한 데이터 저장 파일 및 프로그램 장기 저장
전원 종료 데이터 사라짐 데이터 유지
특징 빠른 임시 작업 공간 장기 저장 공간

Memory라는 용어

컴퓨터에서 Memory라고 표현할 때는 일반적으로 RAM을 의미하는 경우가 많다고 한다.

반면 SSD나 HDD는 Storage라고 부르는 경우가 많다.

내가 이해한 차이

RAM과 SSD의 차이를 내 말로 정리해보기
> RAM은 임시 보관함, SSD는 영구 보관함


5. Operating System은 무엇일까?

Operating System, 줄여서 OS는 운영체제를 의미한다.

대표적인 운영체제로는 다음이 있다.

  • Windows
  • Linux
  • macOS
  • Android
  • iOS

운영체제는 프로그램과 하드웨어 사이에서 컴퓨터의 여러 자원을 관리한다.

예를 들어 Chrome이 실행되고 있다고 생각해보자.

Chrome이 직접 RAM에게

메모리 좀 주세요.

라고 요청하는 것이 아니다.

운영체제가 중간에서 자원을 관리한다.

Chrome
 ↓
Windows
 ↓
RAM

네트워크를 사용할 때도 비슷하다.

Chrome
 ↓
Windows
 ↓
Network Device
 ↓
Internet

운영체제가 관리하는 대표적인 자원은 다음과 같다.

  • CPU
  • Memory
  • Process
  • File
  • User
  • Permission
  • Device
  • Network

보안 공부에서 운영체제가 중요한 이유도 여기에서 시작하는 것 같다.

프로그램이 파일이나 메모리, 네트워크 등을 이용하려면 운영체제의 관리 아래에서 움직이기 때문이다.

내가 이해한 OS

운영체제가 왜 필요한지 내 말로 설명해보기
> 운영체제가 필요한 이유는 컴퓨터를 효율적으로 관리하고, 사용자의 편의를 위해서다


6. Kernel이란?

Kernel은 처음 접했을 때 가장 생소했던 개념이다.

Kernel은 간단하게 말하면 운영체제의 핵심 부분이다.

컴퓨터의 구조를 아주 단순하게 표현하면 다음과 같다.

Application

Chrome
Teams
게임

   ↓

Operating System

   ↓

Kernel

   ↓

Hardware

Kernel은 CPU, Memory, Device, Process와 같은 중요한 시스템 자원을 관리한다.

따라서 Kernel에 문제가 발생하면 단순히 하나의 프로그램에 문제가 생기는 것보다 훨씬 큰 영향을 줄 수 있다.

보안 공부를 하다 보면 앞으로 다음과 같은 용어도 만나게 된다고 한다.

  • Kernel Mode
  • User Mode
  • Kernel Driver
  • Kernel Exploit

아직 이 내용까지 깊게 들어가지는 않고 첫날에는 다음 정도로 이해하기로 했다.

Kernel은 운영체제에서 하드웨어와 시스템 자원을 관리하는 핵심 영역이다.

내가 이해한 Kernel

Kernel이 무엇인지 내 말로 다시 작성해보기
> Kernel은 OS의 핵심 두뇌이자 소프트웨어와 하드웨어를 연결하는 다리


7. Program과 Process의 차이

오늘 공부하면서 가장 중요하게 느껴진 부분이다.

Program과 Process는 같은 것이 아니다.

예를 들어 SSD에 다음 파일이 있다고 하자.

chrome.exe

아직 Chrome을 실행하지 않았다면 이것은 SSD에 저장되어 있는 Program이다.

하지만 Chrome을 실행하면 상황이 달라진다.

chrome.exe

↓ 실행

RAM에 필요한 데이터 적재

↓

CPU가 명령 실행

이렇게 현재 실행되고 있는 프로그램을 Process라고 한다.

따라서 다음과 같이 구분할 수 있다.

Program
= 저장되어 있는 실행 코드

Process
= 현재 실행 중인 프로그램

같은 프로그램이라도 여러 개의 Process가 만들어질 수 있다.

실제로 Chrome을 실행한 상태에서 Windows 작업 관리자를 보면 chrome.exe가 여러 개 실행되어 있는 것을 확인할 수 있다.

내가 이해한 Program과 Process

Program과 Process의 차이를 내가 이해한 방식으로 작성해보기
> 프로그램은 풀기 전 선물, 프로세스는 풀고 있는/푼 선물


8. PID란?

컴퓨터에서는 동시에 굉장히 많은 Process가 실행된다.

예를 들어 내 컴퓨터에서도 다음과 같은 프로그램들이 동시에 실행될 수 있다.

Chrome
Teams
Explorer
백신
Discord
PowerShell

운영체제 입장에서는 각각의 Process를 구분할 방법이 필요하다.

그래서 Process마다 고유한 번호를 할당한다.

이 번호를 PID(Process ID)라고 한다.

예를 들면 다음과 같다.

chrome.exe      PID 4812
Teams.exe       PID 9224
notepad.exe     PID 12540

같은 프로그램을 종료했다가 다시 실행하면 PID는 달라질 수 있다.

즉 PID는 프로그램 자체에 영구적으로 붙어 있는 번호가 아니라 현재 실행 중인 Process를 구분하기 위한 번호다.

내가 이해한 PID

PID가 왜 필요한지 내 말로 설명해보기
> 현재 실행중인 프로세스의 임시 이름표


9. 직접 내 컴퓨터의 Process 확인하기

개념만 공부하지 않고 직접 확인해봤다.

Windows에서는 다음 단축키를 이용해 작업 관리자를 열 수 있다.

Ctrl + Shift + Esc

작업 관리자에서는 현재 컴퓨터에서 실행되고 있는 Process를 확인할 수 있다.

또한 다음과 같은 정보도 확인할 수 있다.

  • CPU 사용량
  • Memory 사용량
  • Disk 사용량
  • Network 사용량

세부 정보 탭으로 들어가면 각 Process의 PID도 확인할 수 있다.

내가 확인한 Process

ProcessPID무엇을 하는 프로그램인가?

node.exe 5464
cmd.exe 20576
   

실제로 Process가 생각했던 것보다 훨씬 많이 실행되고 있었다.


10. CMD에서 Process 확인하기

Windows의 CMD에서도 실행 중인 Process를 확인할 수 있다.

CMD를 실행한 다음 다음 명령어를 입력한다.

tasklist

그러면 현재 실행 중인 Process 목록을 확인할 수 있다.

예를 들어 결과에 다음과 같은 내용이 표시될 수 있다.

Image Name            PID

chrome.exe            4812
explorer.exe          5020

작업 관리자에서 확인했던 PID와 CMD에서 확인한 PID가 동일한지도 비교해볼 수 있다.

직접 확인한 결과

작업 관리자와 tasklist에서 Process와 PID를 비교한 결과 기록하기


11. 프로그램을 실행하면 어떤 일이 일어날까?

오늘 배운 내용을 한 번 연결해보면 다음과 같다.

예를 들어 Chrome을 실행한다고 가정해보자.

먼저 Chrome 프로그램은 SSD에 저장되어 있다.

SSD

chrome.exe

사용자가 Chrome을 실행한다.

사용자

↓ 실행

chrome.exe

운영체제가 Chrome 실행에 필요한 자원을 준비한다.

SSD

chrome.exe

↓

RAM

실행에 필요한 코드와 데이터

그 이후 CPU가 프로그램의 명령을 처리한다.

SSD
 ↓
RAM
 ↓
CPU

그리고 운영체제는 실행된 Chrome을 하나의 Process로 관리한다.

Chrome Process

PID = XXXX

결국 오늘 공부한 개념들이 서로 독립적인 내용이 아니라 하나로 연결된다.

Program
   ↓
실행
   ↓
Process 생성
   ↓
RAM 사용
   ↓
CPU 명령 처리
   ↓
Operating System이 관리

12. 그런데 이게 보안과 무슨 관계가 있을까?

아직 해킹 기법을 공부하지 않았지만 여기서부터 보안과 연결되는 부분이 보이기 시작한다.

예를 들어 컴퓨터에서 다음과 같은 Process를 발견했다고 해보자.

abc123.exe

PID 8240

내가 설치한 기억이 없는 프로그램이다.

보안 담당자라면 여기서 질문을 시작할 수 있다.

  • 이 Process는 무엇인가?
  • 어디에서 실행되었는가?
  • 누가 실행했는가?
  • 어떤 권한으로 실행되고 있는가?
  • 얼마나 많은 Memory를 사용하고 있는가?
  • 어떤 파일에 접근하는가?
  • 외부 Network와 통신하고 있는가?

결국 보안은 단순히 '해킹 기술'을 배우는 것이 아니라 컴퓨터가 정상적으로 어떻게 동작하는지를 이해하고 정상적이지 않은 행동을 찾아내는 과정이라고 볼 수도 있을 것 같다.


Day 1 핵심 정리

오늘 공부한 내용을 한 문장씩 정리해봤다.

CPU

RAM

SSD

Operating System

Kernel

Program

Process

PID


오늘의 최종 질문

공부를 마무리하면서 아래 질문에 자료를 보지 않고 답해보려고 한다.

1. CPU는 어떤 역할을 하는가?

2. RAM은 왜 필요한가?

3. RAM과 SSD는 무엇이 다른가?

4. 운영체제는 어떤 역할을 하는가?

5. Kernel은 무엇인가?

6. Program과 Process는 무엇이 다른가?

7. PID는 무엇이며 왜 필요한가?

8. SSD에 저장된 프로그램을 실행하면 어떤 일이 발생하는가?


Day 1 공부를 마치며

오늘은 보안 기술 자체를 배우지는 않았다.

대신 앞으로 계속 등장할 CPU, RAM, OS, Kernel, Process, PID 같은 기본적인 컴퓨터 용어를 공부했다.

특히 오늘 가장 중요하게 기억하고 싶은 흐름은 이것이다.

SSD에 Program이 저장되어 있다.

↓

사용자가 Program을 실행한다.

↓

운영체제가 Process를 생성한다.

↓

필요한 데이터가 RAM에 올라간다.

↓

CPU가 명령을 처리한다.

↓

운영체제가 해당 Process와 자원을 관리한다.

다음 공부에서는 오늘 배운 컴퓨터 내부 구조를 기반으로 조금씩 시스템과 네트워크가 어떻게 연결되는지 알아볼 예정이다.

728x90
반응형

'쓰윽터디 > 정보 보안' 카테고리의 다른 글

[IT Security] 정보 보안 공부 하기 Day.02  (0) 2026.09.28

+ Recent posts