# 기본 Win CMD for Pentesters
htARTE (HackTricks AWS Red Team Expert)를 통해 제로부터 AWS 해킹을 전문가 수준까지 배워보세요!
* **사이버 보안 회사**에서 일하시나요? **회사를 HackTricks에서 광고하고 싶으신가요**? 아니면 **PEASS의 최신 버전에 액세스하거나 HackTricks를 PDF로 다운로드**하고 싶으신가요? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인해보세요!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견해보세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter**에서 저를 **팔로우**하세요 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **해킹 트릭을 공유하려면 PR을** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **및** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **에 제출하세요.**
## 시스템 정보
### 버전 및 패치 정보
```bash
wmic os get osarchitecture || echo %PROCESSOR_ARCHITECTURE% #Get architecture
systeminfo
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" #Get only that information
wmic computersystem LIST full #Get PC info
wmic qfe get Caption,Description,HotFixID,InstalledOn #Patches
wmic qfe list brief #Updates
hostname
DRIVERQUERY #3rd party driver vulnerable?
```
### 환경
### Basic CMD commands for pentesters
### 펜테스터를 위한 기본 CMD 명령어
#### Networking
#### 네트워킹
##### IP Configuration
##### IP 구성
- **ipconfig** - Display IP configuration for all network interfaces.
- **ipconfig** - 모든 네트워크 인터페이스의 IP 구성을 표시합니다.
##### Network Connections
##### 네트워크 연결
- **netstat -ano** - Display active network connections and listening ports.
- **netstat -ano** - 활성 네트워크 연결과 수신 대기 포트를 표시합니다.
##### DNS
##### DNS
- **nslookup** - Query DNS servers for DNS records.
- **nslookup** - DNS 레코드를 위해 DNS 서버에 쿼리합니다.
##### Ping
##### 핑
- **ping** - Send ICMP echo requests to a specific IP address or domain.
- **ping** - 특정 IP 주소 또는 도메인에 ICMP 에코 요청을 보냅니다.
##### Traceroute
##### Traceroute
- **tracert** - Determine the route packets take to reach a destination IP address or domain.
- **tracert** - 패킷이 목적지 IP 주소 또는 도메인에 도달하는 경로를 결정합니다.
##### Netcat
##### Netcat
- **nc** - Utility for reading from and writing to network connections.
- **nc** - 네트워크 연결에서 읽고 쓰기 위한 유틸리티입니다.
#### System Information
#### 시스템 정보
##### System Information
##### 시스템 정보
- **systeminfo** - Display detailed configuration information about a computer and its operating system.
- **systeminfo** - 컴퓨터와 운영 체제에 대한 자세한 구성 정보를 표시합니다.
##### Processes
##### 프로세스
- **tasklist** - Display a list of currently running processes.
- **tasklist** - 현재 실행 중인 프로세스 목록을 표시합니다.
##### Services
##### 서비스
- **sc query** - Display the status of services on a local or remote machine.
- **sc query** - 로컬 또는 원격 컴퓨터의 서비스 상태를 표시합니다.
##### Event Logs
##### 이벤트 로그
- **wevtutil** - Manage event logs from the command line.
- **wevtutil** - 명령 프롬프트에서 이벤트 로그를 관리합니다.
#### File System
#### 파일 시스템
##### Directory Listing
##### 디렉터리 목록
- **dir** - Display a list of files and subdirectories in a directory.
- **dir** - 디렉터리의 파일과 하위 디렉터리 목록을 표시합니다.
##### File Manipulation
##### 파일 조작
- **copy** - Copy files from one location to another.
- **copy** - 파일을 한 위치에서 다른 위치로 복사합니다.
- **move** - Move files from one location to another.
- **move** - 파일을 한 위치에서 다른 위치로 이동합니다.
- **del** - Delete files.
- **del** - 파일을 삭제합니다.
##### File Permissions
##### 파일 권한
- **icacls** - Display or modify file access control lists (ACLs).
- **icacls** - 파일 액세스 제어 목록(ACL)을 표시하거나 수정합니다.
#### User Accounts
#### 사용자 계정
##### Local Users
##### 로컬 사용자
- **net user** - Display or modify local user accounts.
- **net user** - 로컬 사용자 계정을 표시하거나 수정합니다.
##### Local Groups
##### 로컬 그룹
- **net localgroup** - Display or modify local groups.
- **net localgroup** - 로컬 그룹을 표시하거나 수정합니다.
##### User Privileges
##### 사용자 권한
- **whoami /priv** - Display the privileges of the current user.
- **whoami /priv** - 현재 사용자의 권한을 표시합니다.
#### Registry
#### 레지스트리
##### Registry Keys
##### 레지스트리 키
- **reg query** - Display the values and subkeys of a registry key.
- **reg query** - 레지스트리 키의 값을 및 하위 키를 표시합니다.
##### Registry Values
##### 레지스트리 값
- **reg query** - Display the data for a specific registry value.
- **reg query** - 특정 레지스트리 값의 데이터를 표시합니다.
##### Registry Modification
##### 레지스트리 수정
- **reg add** - Add a new registry key or value.
- **reg add** - 새로운 레지스트리 키 또는 값을 추가합니다.
- **reg delete** - Delete a registry key or value.
- **reg delete** - 레지스트리 키 또는 값을 삭제합니다.
#### Miscellaneous
#### 기타
##### Task Scheduler
##### 작업 스케줄러
- **schtasks** - Create, modify, or delete scheduled tasks.
- **schtasks** - 예약된 작업을 생성, 수정 또는 삭제합니다.
##### Windows Firewall
##### Windows 방화벽
- **netsh advfirewall** - Configure Windows Firewall settings.
- **netsh advfirewall** - Windows 방화벽 설정을 구성합니다.
##### Windows Updates
##### Windows 업데이트
- **wuauclt** - Control Windows Updates from the command line.
- **wuauclt** - 명령 프롬프트에서 Windows 업데이트를 제어합니다.
```bash
set #List all environment variables
```
다음은 강조해야 할 몇 가지 환경 변수입니다:
* **COMPUTERNAME**: 컴퓨터의 이름
* **TEMP/TMP:** 임시 폴더
* **USERNAME:** 사용자 이름
* **HOMEPATH/USERPROFILE:** 홈 디렉토리
* **windir:** C:\Windows
* **OS**: Windows 운영 체제
* **LOGONSERVER**: 도메인 컨트롤러의 이름
* **USERDNSDOMAIN**: DNS와 함께 사용할 도메인 이름
* **USERDOMAIN**: 도메인의 이름
```bash
nslookup %LOGONSERVER%.%USERDNSDOMAIN% #DNS request for DC
```
### 마운트된 디스크
Mounted disks are additional storage devices that have been attached to a computer system and made accessible for use. These disks can be physical devices, such as external hard drives or USB flash drives, or they can be virtual disks created within a virtual machine environment.
마운트된 디스크는 컴퓨터 시스템에 연결되어 사용할 수 있도록 추가 저장 장치입니다. 이 디스크는 외장 하드 드라이브나 USB 플래시 드라이브와 같은 물리적 장치일 수도 있으며, 가상 머신 환경 내에서 생성된 가상 디스크일 수도 있습니다.
```bash
(wmic logicaldisk get caption 2>nul | more) || (fsutil fsinfo drives 2>nul)
wmic logicaldisk get caption,description,providername
```
### [Defender](authentication-credentials-uac-and-efs.md#defender)
### 휴지통
```bash
dir C:\$Recycle.Bin /s /b
```
### 프로세스, 서비스 및 소프트웨어
#### List running processes
#### 실행 중인 프로세스 목록
To list all running processes on a Windows system, you can use the `tasklist` command in the command prompt.
Windows 시스템에서 실행 중인 모든 프로세스를 나열하려면 명령 프롬프트에서 `tasklist` 명령을 사용할 수 있습니다.
```plaintext
tasklist
```
#### List services
#### 서비스 목록
To list all services on a Windows system, you can use the `sc` command in the command prompt.
Windows 시스템의 모든 서비스를 나열하려면 명령 프롬프트에서 `sc` 명령을 사용할 수 있습니다.
```plaintext
sc query
```
#### List installed software
#### 설치된 소프트웨어 목록
To list all installed software on a Windows system, you can use the `wmic` command in the command prompt.
Windows 시스템에 설치된 모든 소프트웨어를 나열하려면 명령 프롬프트에서 `wmic` 명령을 사용할 수 있습니다.
```plaintext
wmic product get name,version
```
#### Stop a service
#### 서비스 중지
To stop a service on a Windows system, you can use the `sc` command with the `stop` parameter in the command prompt.
Windows 시스템에서 서비스를 중지하려면 명령 프롬프트에서 `sc` 명령을 `stop` 매개변수와 함께 사용할 수 있습니다.
```plaintext
sc stop
```
Replace `` with the name of the service you want to stop.
``을 중지하려는 서비스의 이름으로 대체하세요.
#### Start a service
#### 서비스 시작
To start a service on a Windows system, you can use the `sc` command with the `start` parameter in the command prompt.
Windows 시스템에서 서비스를 시작하려면 명령 프롬프트에서 `sc` 명령을 `start` 매개변수와 함께 사용할 수 있습니다.
```plaintext
sc start
```
Replace `` with the name of the service you want to start.
``을 시작하려는 서비스의 이름으로 대체하세요.
```bash
schtasks /query /fo LIST /v #Verbose out of scheduled tasks
schtasks /query /fo LIST 2>nul | findstr TaskName
schtasks /query /fo LIST /v > schtasks.txt; cat schtask.txt | grep "SYSTEM\|Task To Run" | grep -B 1 SYSTEM
tasklist /V #List processes
tasklist /SVC #links processes to started services
net start #Windows Services started
wmic service list brief #List services
sc query #List of services
dir /a "C:\Program Files" #Installed software
dir /a "C:\Program Files (x86)" #Installed software
reg query HKEY_LOCAL_MACHINE\SOFTWARE #Installed software
```
## 도메인 정보
### Whois
Whois는 도메인에 대한 등록 정보를 검색하는 도구입니다. 일반적으로 도메인 소유자, 등록일, 만료일, 네임서버 등의 정보를 제공합니다.
```plaintext
whois <도메인>
```
### DNS 정보
도메인 이름 시스템(DNS)은 도메인 이름을 IP 주소로 변환하는 역할을 합니다. DNS 정보를 확인하여 도메인에 연결된 IP 주소를 확인할 수 있습니다.
```plaintext
nslookup <도메인>
```
### MX 레코드
MX(Mail Exchanger) 레코드는 도메인에 연결된 메일 서버의 정보를 제공합니다. MX 레코드를 확인하여 도메인과 관련된 메일 서버를 파악할 수 있습니다.
```plaintext
nslookup -type=mx <도메인>
```
### SPF 레코드
SPF(Sender Policy Framework) 레코드는 도메인에서 발송되는 이메일을 인증하는 데 사용됩니다. SPF 레코드를 확인하여 도메인의 이메일 인증 설정을 확인할 수 있습니다.
```plaintext
nslookup -type=txt <도메인>
```
### Zone Transfer
Zone Transfer는 DNS 서버에서 도메인에 대한 모든 레코드를 가져오는 과정입니다. Zone Transfer를 통해 도메인에 대한 상세한 정보를 얻을 수 있습니다.
```plaintext
nslookup
> server
> ls -d <도메인>
```
### Subdomain
서브도메인은 기존 도메인의 하위 도메인으로, 서브도메인 스캐닝을 통해 도메인에 연결된 모든 서브도메인을 확인할 수 있습니다.
```plaintext
dnsrecon -d <도메인>
```
### Zone Transfer 방지
Zone Transfer를 방지하기 위해 DNS 서버는 보안 설정을 해야 합니다. Zone Transfer 방지를 위해 다음과 같은 설정을 적용할 수 있습니다.
- DNS 서버에서 Zone Transfer를 허용하지 않도록 설정
- DNS 서버의 IP 주소를 알 수 없도록 설정
- DNS 서버의 소프트웨어 버전을 감추도록 설정
### DNSSEC
DNSSEC(Domain Name System Security Extensions)는 DNS의 보안을 강화하는 기술입니다. DNSSEC를 사용하여 도메인의 DNS 데이터의 무결성과 인증을 보장할 수 있습니다.
### 도메인 레지스트리
도메인 레지스트리는 도메인 이름을 관리하는 조직입니다. 도메인 레지스트리를 통해 도메인에 대한 추가 정보를 확인할 수 있습니다.
### 도메인 레코드
도메인 레코드는 도메인에 대한 다양한 정보를 포함하는 데이터입니다. 도메인 레코드를 확인하여 도메인에 대한 상세한 정보를 파악할 수 있습니다.
```bash
# Generic AD info
echo %USERDOMAIN% #Get domain name
echo %USERDNSDOMAIN% #Get domain name
echo %logonserver% #Get name of the domain controller
set logonserver #Get name of the domain controller
set log #Get name of the domain controller
gpresult /V # Get current policy applied
wmic ntdomain list /format:list #Displays information about the Domain and Domain Controllers
# Users
dsquery user #Get all users
net user /domain #List all users of the domain
net user /domain #Get information about that user
net accounts /domain #Password and lockout policy
wmic useraccount list /format:list #Displays information about all local accounts and any domain accounts that have logged into the device
wmic /NAMESPACE:\\root\directory\ldap PATH ds_user GET ds_samaccountname #Get all users
wmic /NAMESPACE:\\root\directory\ldap PATH ds_user where "ds_samaccountname='user_name'" GET # Get info of 1 users
wmic sysaccount list /format:list # Dumps information about any system accounts that are being used as service accounts.
# Groups
net group /domain #List of domain groups
net localgroup administrators /domain #List uses that belongs to the administrators group inside the domain (the group "Domain Admins" is included here)
net group "Domain Admins" /domain #List users with domain admin privileges
net group "domain computers" /domain #List of PCs connected to the domain
net group "Domain Controllers" /domain #List PC accounts of domains controllers
wmic group list /format:list # Information about all local groups
wmic /NAMESPACE:\\root\directory\ldap PATH ds_group GET ds_samaccountname #Get all groups
wmic /NAMESPACE:\\root\directory\ldap PATH ds_group where "ds_samaccountname='Domain Admins'" Get ds_member /Value #Members of the group
wmic path win32_groupuser where (groupcomponent="win32_group.name="domain admins",domain="DOMAIN_NAME"") #Members of the group
# Computers
dsquery computer #Get all computers
net view /domain #Lis of PCs of the domain
nltest /dclist: #List domain controllers
wmic /NAMESPACE:\\root\directory\ldap PATH ds_computer GET ds_samaccountname #All computers
wmic /NAMESPACE:\\root\directory\ldap PATH ds_computer GET ds_dnshostname #All computers
# Trust relations
nltest /domain_trusts #Mapping of the trust relationships
# Get all objects inside an OU
dsquery * "CN=Users,DC=INLANEFREIGHT,DC=LOCAL"
```
### 로그 및 이벤트
#### Windows 이벤트 로그
Windows 운영 체제는 시스템 및 애플리케이션 이벤트에 대한 로그를 유지합니다. 이벤트 로그는 시스템 문제를 진단하고 보안 위협을 탐지하는 데 도움이 됩니다. 다음은 Windows 이벤트 로그의 유형입니다.
- **Application Log**: 애플리케이션에서 발생한 이벤트를 기록합니다.
- **Security Log**: 보안 관련 이벤트를 기록합니다. 예를 들어 로그인 시도, 계정 잠금 및 암호 변경과 같은 이벤트가 포함됩니다.
- **System Log**: 시스템 관련 이벤트를 기록합니다. 예를 들어 하드웨어 오류, 드라이버 문제 및 서비스 중지와 같은 이벤트가 포함됩니다.
#### 이벤트 로그 검토
이벤트 로그를 검토하여 시스템에 대한 정보를 얻을 수 있습니다. 다음은 이벤트 로그를 검토하는 몇 가지 유용한 명령어입니다.
- **wevtutil**: 이벤트 로그를 관리하는 데 사용되는 명령어입니다. 로그를 내보내거나 가져오는 데 사용할 수 있습니다.
- **eventvwr**: Windows 이벤트 뷰어를 엽니다. 이를 통해 이벤트 로그를 시각적으로 검토할 수 있습니다.
#### 로그 파일 위치
Windows 이벤트 로그 파일은 다음 위치에 저장됩니다.
- **Application Log**: C:\Windows\System32\winevt\Logs\Application.evtx
- **Security Log**: C:\Windows\System32\winevt\Logs\Security.evtx
- **System Log**: C:\Windows\System32\winevt\Logs\System.evtx
#### 로그 파일 분석
로그 파일을 분석하여 시스템에 대한 정보를 추출할 수 있습니다. 다음은 로그 파일을 분석하는 몇 가지 유용한 도구입니다.
- **Event Log Explorer**: Windows 이벤트 로그를 분석하는 데 사용되는 강력한 도구입니다.
- **LogParser**: 로그 파일을 쿼리하고 분석하는 데 사용되는 명령줄 도구입니다.
#### 로그 파일 삭제
로그 파일을 삭제하여 시스템에서 발생한 활동을 숨길 수 있습니다. 다음은 로그 파일을 삭제하는 몇 가지 유용한 명령어입니다.
- **wevtutil**: 이벤트 로그를 삭제하는 데 사용되는 명령어입니다.
- **sdelete**: 로그 파일을 안전하게 삭제하는 데 사용되는 명령줄 도구입니다.
```bash
#Make a security query using another credentials
wevtutil qe security /rd:true /f:text /r:helpline /u:HELPLINE\zachary /p:0987654321
```
### 사용자
#### 사용자 계정 만들기
```bash
net user /add
```
#### 사용자 계정 삭제하기
```bash
net user /delete
```
#### 사용자 계정 비밀번호 변경하기
```bash
net user
```
#### 사용자 계정 정보 보기
```bash
net user
```
### 그룹
#### 그룹 만들기
```bash
net localgroup /add
```
#### 그룹 삭제하기
```bash
net localgroup /delete
```
#### 그룹에 사용자 추가하기
```bash
net localgroup /add
```
#### 그룹에서 사용자 제거하기
```bash
net localgroup /delete
```
#### 그룹 정보 보기
```bash
net localgroup
```
## 서비스
### 서비스 보기
```bash
sc query
```
### 서비스 시작하기
```bash
sc start
```
### 서비스 중지하기
```bash
sc stop
```
### 서비스 재시작하기
```bash
sc restart
```
### 서비스 설정 변경하기
```bash
sc config