LEARN · PRACTICE · REVIEW
정보보안 첫 실습: 명령보다 관찰부터
PowerShell에서 현재 위치와 파일 목록을 살펴보고, 예상과 실제 결과의 차이를 기록하는 작은 실습입니다.
정보보안을 처음 배우면 낯선 명령을 많이 실행하는 것이 실습이라고 느끼기 쉽습니다. 하지만 명령을 복사해 실행한 뒤 결과가 왜 그렇게 나왔는지 말하지 못하면 다음 상황에서 적용하기 어렵습니다. 이 글에서는 내 컴퓨터의 현재 위치와 목록을 읽는 두 명령으로, 실행 전 예상·실제 관찰·설명의 흐름을 연습합니다.
1. 실습 대상을 내 컴퓨터로 정합니다
Windows에서 PowerShell을 일반 권한으로 엽니다. 아래 예제는 현재 위치와 그 위치의 항목을 조회하므로 관리자 권한으로 실행할 필요가 없습니다. 개인용 컴퓨터가 아니라 조직에서 관리하는 장치라면 장치 이용 규칙을 먼저 따릅니다. 네트워크의 다른 장치나 외부 사이트에 요청을 보내는 명령은 이 실습에 포함하지 않습니다.
화면을 캡처할 계획이라면 사용자 이름, 실제 폴더명, 문서 제목 같은 개인 정보가 보일 수 있다는 점을 확인하세요. 아래 기록 예시처럼 경로를 C:\Example로 바꾸어 적어도 관찰 내용은 설명할 수 있습니다.
2. 실행하기 전에 결과를 예상합니다
먼저 “지금 PowerShell이 바라보는 위치는 어디일까?”라고 예상한 뒤 다음 한 줄을 직접 입력하고 Enter를 누릅니다.
Get-LocationPath 아래에 표시되는 값이 현재 작업 위치입니다. 창을 처음 연 방식이나 이전에 실행한 명령에 따라 사람마다 결과가 다릅니다. 예시와 경로가 다르다는 이유만으로 실패한 것은 아닙니다. 내가 예상한 폴더와 출력된 위치가 같은지 확인하세요.
다음으로 현재 위치 안에 무엇이 있을지 예상한 뒤 목록을 조회합니다.
Get-ChildItem파일 시스템 위치에서 실행하면 그 위치의 파일과 하위 폴더가 표시됩니다. 이 명령은 기본적으로 모든 하위 폴더 안을 끝까지 탐색하지 않습니다. 표시된 이름 하나가 폴더인지 파일인지, 어떤 열에서 그 차이를 확인할 수 있는지 살펴봅니다. 숨김 항목이나 접근 권한 때문에 탐색기에서 보던 목록과 차이가 날 수 있습니다.
예상과 관찰을 나누는 예시
예상: PowerShell을 열었으니 바탕 화면의 파일들이 보일 것이다.
관찰: 첫 명령의 Path는 바탕 화면이 아니라 사용자 폴더였다. 두 번째 명령도 그 위치의 목록을 보여 주었다.
설명: 목록 조회는 내가 눈으로 보고 있는 바탕 화면이 아니라 현재 작업 위치를 기준으로 한다. 다음 명령 전에 위치를 확인한다.
이 예시는 특정 사용자의 실제 파일이나 실행 기록을 옮긴 것이 아닙니다.
같은 조건으로 비교하는 작은 실험
개인 폴더 대신 매번 새로운 임시 실습 폴더를 만듭니다. 아래 준비 코드만 파일을 생성하며, 그 뒤의 관찰 명령은 목록을 읽습니다. Windows PowerShell 5.1 또는 Windows의 PowerShell 7에서 일반 권한으로 진행하세요. 창을 닫으면 $lab3001 변수는 사라집니다.
$lab3001 = Join-Path ([System.IO.Path]::GetTempPath()) ('labs3001-observe-' + [guid]::NewGuid().ToString('N'))
New-Item -ItemType Directory -Path $lab3001 -ErrorAction Stop | Out-Null
New-Item -ItemType Directory -Path (Join-Path $lab3001 'notes') -ErrorAction Stop | Out-Null
Set-Content -LiteralPath (Join-Path $lab3001 'memo.txt') -Value 'first observation' -Encoding UTF8
Set-Content -LiteralPath (Join-Path $lab3001 'result.csv') -Value 'name,score' -Encoding UTF8
Set-Content -LiteralPath (Join-Path $lab3001 'notes\day1.txt') -Value 'nested file' -Encoding UTF8
Set-Location -LiteralPath $lab3001준비가 끝나면 다음 구조가 됩니다. 폴더의 긴 이름은 실행할 때마다 달라도 괜찮습니다.
labs3001-observe-고유값/
├─ memo.txt
├─ result.csv
└─ notes/
└─ day1.txt아래 명령은 하나씩 실행해 보세요. -Name으로 날짜·크기 열을 생략하고 이름만 비교합니다. 출력 순서보다 항목의 집합을 확인하세요.
| 명령 | 이 실습 폴더에서 나오는 이름 | 이유 |
|---|---|---|
Get-ChildItem -Name | memo.txt, result.csv, notes | 현재 위치의 바로 아래 항목. notes도 폴더로 표시됩니다. |
Get-ChildItem -File -Name | memo.txt, result.csv | 현재 위치의 파일만. notes는 폴더라 제외됩니다. |
Get-ChildItem -File -Recurse -Name | memo.txt, result.csv, notes\day1.txt | 하위 폴더까지 내려가 파일만 찾습니다. |
출력이 다르면 Get-Location으로 준비한 폴더인지 먼저 봅니다. notes가 없으면 준비 명령의 오류를, day1.txt가 빠지면 -Recurse 입력을 확인합니다. 이 예제에는 숨김 항목과 접근 제한 폴더가 없습니다.
텍스트 해설 보기
정답은 2개입니다. -File은 폴더를 제외하며, 하위 폴더를 탐색하는 옵션은 -Recurse입니다.
텍스트 해설 보기
정답은 day1.txt입니다. Set-Location -LiteralPath $lab3001로 최상위 연습 폴더에 돌아올 수 있습니다.
기록을 완성하고 마무리하기
“3개를 예상했지만 -File 결과는 2개였다. 하위 파일까지 보려면 -Recurse가 필요하다”처럼 예상·관찰·설명을 따로 기록합니다. 실습 폴더는 결과 확인을 위해 남겨 둡니다. 나중에 정리할 때는 Get-Location에 나온 경로와 고유 이름이 이번에 만든 폴더인지 확인한 뒤 탐색기에서 처리하세요.
이 예제의 목록은 별도 임시 폴더에서 실행해 확인했습니다. 실제 출력에서 개인 경로나 파일명을 문의에 첨부할 필요는 없습니다.
3. 성공 여부 대신 관찰을 기록합니다
| 질문 | 남길 기록 |
|---|---|
| 어디에서 실행했나요? | PowerShell, 일반 권한, 경로는 개인 정보를 가린 형태로 기록 |
| 무엇을 예상했나요? | 확인할 위치 또는 목록에 대한 한 문장 |
| 실제로 무엇이 나왔나요? | Path와 목록의 차이, 오류가 있다면 필요한 메시지만 기록 |
| 다음에는 무엇을 확인하나요? | 현재 위치, 대상 항목, 명령 철자 등 한 가지 |
오류가 나면 명령을 더 길게 붙여서 해결하려 하지 말고, 철자를 확인하고 어떤 위치에서 실행했는지부터 다시 봅니다. “Access is denied”처럼 권한 관련 메시지가 나오면 해당 위치의 접근 권한이 원인일 수 있습니다. 이 입문 실습을 위해 장치의 보호 설정을 바꾸거나 임의로 권한을 올릴 필요는 없습니다.
4. 읽는 명령과 바꾸는 명령을 구분합니다
이번에 사용한 두 명령은 관찰하는 데 목적이 있습니다. 이후 파일 생성·이동·삭제를 배우게 되면 실행 대상과 바뀌는 범위를 먼저 적는 습관을 이어가세요. 수업에서 실습 폴더를 지정하면 그 폴더를 기준으로 진행하고, 이름이 비슷한 실제 업무 자료를 대상으로 삼지 않습니다. 명령을 이해하지 못한 상태에서는 수업의 설명과 공식 도움말을 먼저 확인합니다.
5. 준비한 만큼 다음 수업으로 이어갑니다
두 명령의 결과를 자신의 말로 설명할 수 있으면 InfoSec 3001의 Step 1에서 준비물과 전체 예제를 읽어 보세요. 처음 오셨나요는 학습 시작 방법을, 전체 커리큘럼은 다음 순서를 찾는 데 도움이 됩니다. 이미 다른 언어나 운영체제를 알고 있다면 주제별 목록에서 필요한 기초를 확인한 뒤 수업의 전제 조건에 맞게 시작할 수 있습니다.
학습 완료 표시가 있다고 해서 이해가 자동으로 검증되는 것은 아닙니다. 명령의 의미, 대상, 출력 결과를 설명할 수 있는지 스스로 확인하고 표시를 남겨 주세요. InfoSec 3001의 완료·북마크·읽던 위치는 현재 브라우저에 저장되므로 다른 브라우저에서는 같게 보이지 않을 수 있습니다.
직접 확인할 자료
- Microsoft Learn: Get-Location — 현재 작업 위치 조회
- Microsoft Learn: Get-ChildItem — 현재 위치 또는 지정 위치의 항목 조회
- InfoSec 3001 Step 1 — PowerShell 입문 수업
명령의 동작은 Microsoft 공식 문서를 기준으로 설명했으며, 관찰 기록과 학습 흐름은 3001 LABS가 작성했습니다.