본문 바로가기
[Microsoft] Cyber Security School 7기

클라우드 기초 과제-1 (윈도우즈 네트워크, 방화벽 및 사용자/그룹 계정)

by juyeon2110 2026. 4. 14.

1. 윈도우 11 PowerShell 7.6 기반 네트워크 관련 명령어 및 자주 사용하는 방화벽 설정 명령어 모음

네트워크 인터페이스 확인

*네트워크 어댑터 = 네트워크 인터페이스 카드 = NIC = 이더넷카드 = 랜카드

전체 네트워크 어댑터 목록
Get-NetAdapter
특정 어댑터 상세 정보
Get-NetAdapter -Name "Ethernet"
어댑터 상태만 필터링
Get-NetAdapter | Select-Object Name, Status, LinkSpeed
어댑터 활성화
Enable-NetAdapter -Name "Ethernet"
어댑터 비활성화
Disable-NetAdapter -Name "Ethernet"

IP 주소 확인 및 설정

전체 IP 주소 목록
Get-NetIPAddress
특정 인터페이스의 IP 확인
Get-NetIPAddress -InterfaceAlias "Ethernet"
IP 주소 변경
Set-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress "192.168.1.101" -PrefixLength 24
IP 주소 삭제
Remove-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress "192.168.1.100"
DHCP로 전환
Set-NetIPInterface -InterfaceAlias "Ethernet" -Dhcp Enabled

DNS 확인 및 설정

*DNS 캐시 : 이전에 조회한 도메인과 IP 주소의 매핑 결과를 로컬에 임시 저장해두는 공간으로, 같은 도메인에 재접속할 때 DNS 서버에 다시 질의하지 않고 저장된 값을 바로 사용해 응답 속도를 높인다.

현재 DNS 서버 확인
Get-DnsClientServerAddress
DNS 서버 설정
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses "8.8.8.8","8.8.4.4"
DNS 서버 초기화 (DHCP 기본값)
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ResetServerAddresses
DNS 캐시 확인
Get-DnsClientCache
DNS 캐시 초기화
Clear-DnsClientCache

라우팅 테이블 확인 및 설정

*라우팅 테이블 : 패킷이 목적지에 도달하기 위해 어느 인터페이스와 게이트웨이를 통해 나가야 하는지를 정의한 경로 목록

라우팅 테이블 전체 조회
Get-NetRoute
기본 게이트웨이 확인
Get-NetRoute -DestinationPrefix "0.0.0.0/0"
정적 경로 추가
New-NetRoute -InterfaceAlias "Ethernet" -DestinationPrefix "10.0.0.0/8" -NextHop "192.168.1.1"
정적 경로 삭제
Remove-NetRoute -DestinationPrefix "10.0.0.0/8"

네트워크 연결 상태 확인

현재 TCP 연결 목록
Get-NetTCPConnection
ESTABLISHED 상태만 필터링
Get-NetTCPConnection -State Established
특정 포트 사용 확인
Get-NetTCPConnection -LocalPort 80
UDP 연결 목록
Get-NetUDPEndpoint

네트워크 진단 명령어

ping (연결 확인)
Test-Connection 8.8.8.8
ping 횟수 지정
Test-Connection 8.8.8.8 -Count 4
traceroute (경로 추적)
Test-NetConnection 8.8.8.8 -TraceRoute
특정 포트 연결 테스트
Test-NetConnection -ComputerName "google.com" -Port 443
네트워크 통계 확인
Get-NetTCPConnection | Group-Object State

방화벽 상태 확인

방화벽 전체 프로필 상태 확인
Get-NetFirewallProfile
특정 프로필 상태 확인
Get-NetFirewallProfile -Profile Domain,Public,Private
방화벽 규칙 전체 목록
Get-NetFirewallRule
활성화된 규칙만 조회
Get-NetFirewallRule -Enabled True
특정 규칙 상세 확인
Get-NetFirewallRule -DisplayName "규칙이름"
규칙에 연결된 포트 정보 확인
Get-NetFirewallRule -DisplayName "규칙이름" | Get-NetFirewallPortFilter
규칙에 연결된 주소 정보 확인
Get-NetFirewallRule -DisplayName "규칙이름" | Get-NetFirewallAddressFilter

방화벽 프로필 설정

전체 프로필 방화벽 활성화
Set-NetFirewallProfile -All -Enabled True
전체 프로필 방화벽 비활성화
Set-NetFirewallProfile -All -Enabled False
특정 프로필만 활성화
Set-NetFirewallProfile -Profile Public -Enabled True

방화벽 인바운드 규칙 설정

특정 포트 허용 (TCP)
New-NetFirewallRule -DisplayName "Allow TCP 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow
특정 포트 차단 (TCP)
New-NetFirewallRule -DisplayName "Block TCP 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Block
특정 포트 허용 (UDP)
New-NetFirewallRule -DisplayName "Allow UDP 53" -Direction Inbound -Protocol UDP -LocalPort 53 -Action Allow
특정 IP에서 오는 트래픽 허용
New-NetFirewallRule -DisplayName "Allow from 192.168.1.0/24" -Direction Inbound -RemoteAddress "192.168.1.0/24" -Action Allow
특정 IP 차단
New-NetFirewallRule -DisplayName "Block IP" -Direction Inbound -RemoteAddress "1.2.3.4" -Action Block
특정 프로그램 허용
New-NetFirewallRule -DisplayName "Allow App" -Direction Inbound -Program "C:\app\app.exe" -Action Allow

방화벽 아웃바운드 규칙 설정

특정 포트 아웃바운드 차단
New-NetFirewallRule -DisplayName "Block Out 443" -Direction Outbound -Protocol TCP -LocalPort 443 -Action Block
특정 IP로 아웃바운드 차단
New-NetFirewallRule -DisplayName "Block Out IP" -Direction Outbound -RemoteAddress "1.2.3.4" -Action Block
특정 프로그램 아웃바운드 차단
New-NetFirewallRule -DisplayName "Block App Out" -Direction Outbound -Program "C:\app\app.exe" -Action Block

방화벽 규칙 수정 및 삭제

규칙 비활성화
Set-NetFirewallRule -DisplayName "규칙이름" -Enabled False
규칙 활성화
Set-NetFirewallRule -DisplayName "규칙이름" -Enabled True
규칙 Action 변경
Set-NetFirewallRule -DisplayName "규칙이름" -Action Block
규칙 삭제
Remove-NetFirewallRule -DisplayName "규칙이름"
비활성화된 규칙 전체 삭제
Get-NetFirewallRule -Enabled False | Remove-NetFirewallRule

2. 윈도우 11 PowerShell 7.6 기반 사용자 계정 및 그룹 계정 확인 및 설정 명령어 모음

사용자 계정 확인

로컬 사용자 전체 목록
Get-LocalUser
특정 사용자 상세 정보
Get-LocalUser -Name "hello"
이름·SID·활성화·마지막 로그온 조회
Get-LocalUser | Select-Object Name, SID, Enabled, LastLogon
현재 사용자 이름 + SID
whoami /user
소속 그룹 목록
whoami /groups
보유 권한 목록
whoami /priv
위 세 가지 전부 출력
whoami /all

사용자 계정 생성 및 설정

비밀번호 SecureString 변환
$pw = ConvertTo-SecureString "비밀번호" -AsPlainText -Force
새 로컬 사용자 생성
New-LocalUser -Name "newuser" -Password $pw -FullName "홍길동" -Description "설명"
계정 활성화
Enable-LocalUser -Name "newuser"
계정 비활성화
Disable-LocalUser -Name "newuser"
비밀번호 변경
Set-LocalUser -Name "newuser" -Password $pw
속성 변경 (이름·설명)
Set-LocalUser -Name "newuser" -FullName "김철수" -Description "변경된 설명"
계정 삭제
Remove-LocalUser -Name "newuser"

그룹 계정 확인

로컬 그룹 전체 목록
Get-LocalGroup
특정 그룹 상세 정보
Get-LocalGroup -Name "Administrators"
특정 그룹의 멤버 목록
Get-LocalGroupMember -Group "Administrators"
특정 사용자의 소속 그룹 확인
Get-LocalGroup | Where-Object { (Get-LocalGroupMember $_.Name -ErrorAction SilentlyContinue).Name -contains "desktop-nova\hello" }

그룹 계정 생성 및 설정

새 로컬 그룹 생성
New-LocalGroup -Name "TestGroup" -Description "테스트 그룹"
그룹에 사용자 추가
Add-LocalGroupMember -Group "TestGroup" -Member "newuser"
그룹에서 사용자 제거
Remove-LocalGroupMember -Group "TestGroup" -Member "newuser"
그룹 설명 변경
Set-LocalGroup -Name "TestGroup" -Description "변경된 설명"
그룹 삭제
Remove-LocalGroup -Name "TestGroup"

SID 조회

특정 계정의 SID 조회
(Get-LocalUser -Name "hello").SID
SID로 계정명 역조회
$sid = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-21-...-1001")

3. 파워쉘에서 whoami /all 명령어 출력에서의 각 항목에 대한 의미 해석 정리

사용자 정보

----------------

사용자 이름 SID

================== =============================================

desktop-nova\hello S-1-5-21-1887364313-841492127-1990988381-1001

=>

desktop-nova\hello : 컴퓨터이름\계정이름 형식, 로컬 컴퓨터 desktop-nova에 hello라는 계정으로 로그인되어 있음

SID S-1-5-21-...-1001 : 마지막 RID가 1000 이상이므로 관리자가 직접 생성한 일반 사용자 계정임

그룹 정보

-----------------

=>

로그인한 hello 계정의 액세스 토큰에 포함된 그룹 SID 목록. 이 그룹들의 권한이 모두 합산되어 현재 세션의 접근 범위를 결정한다.

그룹 이름 유형 SID 특성

============================================ ============== ============ ==============================================================

Everyone 잘 알려진 그룹 S-1-1-0 필수 그룹, 기본값으로 사용 가능, 사용 가능한 그룹

=> 시스템에 접근하는 모든 사용자를 포함하는 Well-Known 그룹. 인증 여부와 관계없이 포함된다.

NT AUTHORITY\로컬 계정 및 관리자 그룹 구성원 잘 알려진 그룹 S-1-5-114 필수 그룹, 기본값으로 사용 가능, 사용 가능한 그룹

=> 로컬 계정이면서 동시에 Administrators 그룹에 속하는 사용자를 나타낸다. hello 계정이 관리자임을 의미한다.

BUILTIN\Administrators 별칭 S-1-5-32-544 필수 그룹, 기본값으로 사용 가능, 사용 가능한 그룹, 그룹 소유자

=> 로컬 관리자 그룹이다. 이 그룹에 속해 있다는 것은 시스템 전반에 대한 고권한을 가진다는 의미다. 특성에 "그룹 소유자"가 표시되어 있어 이 그룹이 현재 토큰의 소유자 그룹임을 나타낸다.

BUILTIN\Users 별칭 S-1-5-32-545 필수 그룹, 기본값으로 사용 가능, 사용 가능한 그룹

=> 일반 사용자 그룹으로, 로컬 계정이면 기본적으로 포함된다.

NT AUTHORITY\INTERACTIVE 잘 알려진 그룹 S-1-5-4 필수 그룹, 기본값으로 사용 가능, 사용 가능한 그룹

=> 현재 컴퓨터에 직접(물리적으로) 로그온한 사용자임을 나타내는 그룹이다. 원격 세션이 아닌 로컬 로그인임을 의미한다.

CONSOLE LOGON 잘 알려진 그룹 S-1-2-1 필수 그룹, 기본값으로 사용 가능, 사용 가능한 그룹

=> 콘솔(로컬 화면)을 통해 로그인했음을 나타낸다. INTERACTIVE와 유사하지만 콘솔 세션임을 더 구체적으로 명시한다.

NT AUTHORITY\Authenticated Users 잘 알려진 그룹 S-1-5-11 필수 그룹, 기본값으로 사용 가능, 사용 가능한 그룹

=> 익명 접근이 아닌, 정상적으로 인증을 거친 사용자임을 나타낸다.

NT AUTHORITY\This Organization 잘 알려진 그룹 S-1-5-15 필수 그룹, 기본값으로 사용 가능, 사용 가능한 그룹

=> 동일한 조직(도메인 또는 로컬 시스템) 내에서 인증된 사용자임을 나타낸다.

NT AUTHORITY\로컬 계정 잘 알려진 그룹 S-1-5-113 필수 그룹, 기본값으로 사용 가능, 사용 가능한 그룹

=> 도메인 계정이 아닌 로컬 계정으로 로그인했음을 명시하는 그룹이다.

LOCAL 잘 알려진 그룹 S-1-2-0 필수 그룹, 기본값으로 사용 가능, 사용 가능한 그룹

=> 로컬 시스템에 직접 로그온한 사용자를 나타내는 그룹이다.

NT AUTHORITY\NTLM Authentication 잘 알려진 그룹 S-1-5-64-10 필수 그룹, 기본값으로 사용 가능, 사용 가능한 그룹

=> 인증 방식이 NTLM이었음을 나타낸다. Kerberos가 아닌 NTLM으로 인증되었다는 의미다.

Mandatory Label\High Mandatory Level 레이블 S-1-16-12288

=> 무결성 레벨(Integrity Level)을 나타낸다.

Windows Vista 이후 도입된 개념으로, High는 관리자 권한으로 실행 중임을 의미한다.

Low → Medium → High → System 순으로 높아지며, UAC가 활성화된 환경에서 일반 프로세스는 Medium, 관리자 권한으로 상승된 프로세스는 High로 표시된다.

사용 권한 정보

----------------------

=>

계정에 부여된 시스템 수준 권한 목록이다. "사용"은 현재 활성화된 상태, "사용 안 함"은 부여는 되어 있지만 현재 비활성화된 상태다.

사용 권한 이름 설명 상태

========================================= ======================================================== ==========

SeIncreaseQuotaPrivilege 프로세스에 대한 메모리 할당량 조정 사용 안 함

=> 프로세스에 할당된 메모리 한도를 늘릴 수 있는 권한. 보안 관점에서 매우 강력한 권한으로, 이걸 이용해 다른 프로세스의 메모리를 덤프하거나 조작하는 것이 가능하다. 악용 시 자격증명 탈취(예: lsass 덤프) 등에 쓰인다.

SeSecurityPrivilege 감사 및 보안 로그 관리 사용 안 함

=> 보안 이벤트 로그를 읽고 지우거나 SACL을 설정할 수 있는 권한

*SACL(System Access Control List): ACL의 한 종류로, 특정 사용자나 그룹이 객체에 접근을 시도했을 때 그 행위를 보안 이벤트 로그에 기록할지 여부를 정의하는 감사(Audit) 전용 목록

*ACL(Access Control List, 접근 제어 목록): 파일, 폴더, 레지스트리 키 등 보안 객체에 붙어 있는 권한 목록으로, 어떤 사용자나 그룹이 해당 객체에 대해 어떤 작업을 허용 또는 거부할지를 SID 단위로 정의한다.

SeTakeOwnershipPrivilege 파일 또는 기타 개체의 소유권 가져오기 사용 안 함

=> ACL 허가 없이도 파일·레지스트리·프로세스 등 모든 객체의 소유권을 강제로 가져올 수 있는 권한

SeLoadDriverPrivilege 장치 드라이버 로드 및 언로드 사용 안 함

=> 커널 수준의 드라이버를 시스템에 올리거나 내릴 수 있는 권한.

SeSystemProfilePrivilege 프로필 시스템 성능 사용 안 함

=> 시스템 전체의 성능 데이터를 수집할 수 있는 권한

SeSystemtimePrivilege 시스템 시간 변경 사용 안 함

=> 운영체제의 시스템 시각을 변경할 수 있는 권한

SeProfileSingleProcessPrivilege 프로필 단일 프로세스 사용 안 함

=> 특정 단일 프로세스의 성능 데이터를 수집할 수 있는 권한

SeIncreaseBasePriorityPrivilege 예약 우선 순위 증가 사용 안 함

=> 프로세스의 스케줄링 우선순위를 높일 수 있는 권한

SeCreatePagefilePrivilege 페이지 파일 만들기 사용 안 함

=> 가상 메모리에 사용되는 페이지 파일을 생성하고 크기를 조정할 수 있는 권한

SeBackupPrivilege 파일 및 디렉터리 백업 사용 안 함

=> ACL 허가와 무관하게 파일·디렉터리를 읽을 수 있는 권한. 백업 목적이지만 악용 시 민감한 파일에 무단 접근 가능

SeRestorePrivilege 파일 및 디렉터리 복원 사용 안 함

=> ACL 허가와 무관하게 파일·디렉터리에 쓸 수 있는 권한. SeBackupPrivilege와 짝을 이루며 악용 시 시스템 파일 덮어쓰기 가능

SeShutdownPrivilege 시스템 종료 사용 안 함

=> 운영체제를 종료하거나 재시작할 수 있는 권한

SeDebugPrivilege 프로그램 디버깅 사용

=> 다른 프로세스의 메모리를 읽고 쓸 수 있는 권한. lsass 프로세스 메모리 덤프를 통한 자격증명 탈취 등 공격에 악용될 수 있어 보안상 매우 위험한 권한

SeSystemEnvironmentPrivilege 펌웨어 환경 값 수정 사용 안 함

=> UEFI·BIOS 등 펌웨어 수준의 환경 변수를 수정할 수 있는 권한

SeChangeNotifyPrivilege 트래버스 검사 무시 사용

=> 디렉터리 탐색 시 중간 경로의 권한 검사를 건너뛸 수 있는 권한

SeRemoteShutdownPrivilege 원격 시스템에서 강제 종료 사용 안 함

=> 네트워크를 통해 원격 컴퓨터를 강제 종료할 수 있는 권한

SeUndockPrivilege 도킹 스테이션에서 컴퓨터 제거 사용 안 함

=> 노트북을 도킹 스테이션에서 소프트웨어적으로 분리할 수 있는 권한

SeManageVolumePrivilege 볼륨 유지 관리 작업 수행 사용 안 함

=> 디스크 볼륨에 대한 유지관리 작업(조각 모음, 볼륨 확장 등)을 수행할 수 있는 권한

SeImpersonatePrivilege 인증 후 클라이언트 가장 사용

=> 인증된 다른 사용자의 토큰을 빌려 그 사용자인 것처럼 동작할 수 있는 권한. Potato 계열 권한 상승 공격에서 주로 악용되는 위험한 권한

SeCreateGlobalPrivilege 전역 개체 만들기 사용

=> 모든 세션에서 공유되는 전역 커널 객체(뮤텍스, 이벤트 등)를 생성할 수 있는 권한

SeIncreaseWorkingSetPrivilege 프로세스 작업 집합 향상 사용 안 함

=> 프로세스가 물리 메모리에 상주할 수 있는 작업 집합 크기를 늘릴 수 있는 권한

SeTimeZonePrivilege 시간대 변경 사용 안 함

=> 시스템의 시간대(타임존) 설정을 변경할 수 있는 권한

SeCreateSymbolicLinkPrivilege 심볼 링크 만들기 사용 안 함

=> 파일 시스템 심볼릭 링크를 생성할 수 있는 권한. 악용 시 링크를 이용한 권한 상승 공격이 가능

*심볼릭 링크 : 특정 파일이나 디렉터리를 가리키는 포인터 역할의 가상 경로로, 원본 위치와 다른 경로에서 동일한 대상에 접근할 수 있게 해주는 파일 시스템 객체

SeDelegateSessionUserImpersonatePrivilege 동일한 세션의 다른 사용자에 대한 가장 토큰을 가져옵니다. 사용 안 함

=> 같은 로그온 세션 내 다른 사용자의 가장 토큰을 획득할 수 있는 권한. SeImpersonatePrivilege보다 범위가 제한적

4. Windows SID(Security Identifier)의 개념과 역할 설명

Windows SID의 개념:

Windows 운영체제에서 SID(Security Identifier)는 사용자, 그룹, 컴퓨터와 같은 보안 주체(Security Principal)를 식별하기 위해 부여되는 가변 길이의 고유한 식별자이다. 이는 문자열 형태로 표현되며 일반적으로 “S-1-5-21-1234567890-1234567890-1234567890-1001”과 같은 구조를 가진다. 시스템이 계정을 생성할 때 자동으로 부여하며, 시스템 내부적으로는 '이름'이 아닌 이 '번호'를 통해 모든 보안 주체를 관리한다.

구조:

ex) S-1-5-21-1234567890-1234567890-1234567890-1001

S-1 : Windows System이란 뜻

5-21 : 도메인 컨트롤러 시스템 (Domain Controller System)이거나 단독 시스템 (stand-alone)을 의미. 동일한 도메인 내에 있는 계정들은 동일한 값을 가진다.

1234567890-1234567890-1234567890 : 해당 시스템만의 고유한 식별자. 동일한 컴퓨터에 다시 윈도우를 설치해도 동일한 값을 가지지 않는다. 동일한 시스템 내에 있는 계정들은 동일한 식별자를 가진다.

500 / 501 / 1000이상 : 사용자 식별자(ID)

500 : 관리자 (Administrator) 식별자

501 : 게스트 (Guest) 식별자

1000 이상 : 일반 사용자 식별자

역할:

객체 식별: SID는 보안 주체를 특정 ID와 연결하여 엔터티를 쉽게 식별하고 민감한 파일 주변의 활동을 쉽게 감사할 수 있도록 한다.

접근 제어: Windows는 특정 보안 주체와 연관된 권한 수준을 결정하기 위해 SID를 액세스 제어 목록(ACL)과 대조한다. 이를 통해 사용자에게 액세스 제어 목록에 명시된 권한(읽기, 쓰기, 삭제 등)보다 더 많거나 적은 권한이 부여되지 않도록 보장한다.

모니터링 및 감사: SID는 Windows 로그에서 로그인 시도 및 파일 변경과 같은 액세스 이벤트를 추적하는 데 사용되고 이를 통해 보안 팀은 사용자 활동을 모니터링하고, 침해된 계정을 격리하며, 로그인 실패 시도, 무단 파일 삭제 등과 같은 보안 사고를 해결할 수 있다.

보안: 복잡한 해싱 메커니즘을 사용하여 생성되고 액세스 토큰에 내장되기 때문에 SID는 사용자 이름/암호 쌍과 달리 도용, 해독 또는 복제가 어려워 침해 위험을 제한한다. 또한 SID는 엔터프라이즈 네트워크의 다양한 도메인에서 일관된 액세스 제어를 가능하게 하는 도메인 간 액세스 기능을 제공한다.

- 사용자 계정과 그룹 계정에서 SID가 필요한 이유 분석

사용자 계정 관점 :

사용자 계정에 SID가 필요한 이유는 계정명과 권한을 완전히 분리하기 위해서다. 계정명은 언제든 변경될 수 있는 값이기 때문에, 이를 기준으로 권한을 관리하면 이름이 바뀔 때마다 모든 리소스의 권한 설정을 다시 구성해야 한다. SID는 계정이 존재하는 동안 절대 변하지 않기 때문에, Windows는 권한을 파일이나 폴더의 ACL에 계정명이 아닌 SID로 저장하며, 이 설계 덕분에 계정명이 바뀌어도 권한은 그대로 유지된다.

그룹 계정 관점 :

그룹 계정에 SID가 필요한 이유는 권한 관리의 효율성 때문이다. 보안 그룹은 자체 SID를 가지므로 리소스에 대한 권한을 그룹 SID 하나로 지정할 수 있으며, 사용자 수가 많은 환경에서 개별 사용자 SID를 모두 ACL에 등록하면 ACL이 관리 불가능한 수준으로 커지고 권한 검사 속도도 저하될 수 있다. 룹 SID를 통해 이 문제를 구조적으로 해결할 수 있다.

- SID와 사용자 이름(Account Name)의 차이 설명

항목
SID
사용자 이름 (Account Name)
가독성
기계가 처리하는 문자열
사람이 읽을 수 있음
변경 가능 여부
불변 (계정 수명 동안 유지)
변경 가능
고유성 보장
전역 고유, 절대 재사용 안 함
시스템 내 고유, 재사용 가능
사용 주체
OS 내부 보안 처리, ACL
사용자, 관리자 UI
삭제 후 처리
삭제된 SID는 영구 폐기
동일 이름 재사용 가능