# 기본 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