펜테스팅 위키
  • Welcome
    • Home
  • 정보 수집
    • OSINT
      • Sub Domain
      • Google Hacking
      • Github
      • IP Address
      • Employees
    • 내부망
      • RID Cycling
      • Password Spraying
      • Password Must Change
      • Extension
        • xlsx/ods
        • pfx
        • vhd
        • pst
        • vbs
        • hc
      • Protocol
        • 21 - FTP
        • 22 - SSH
        • 25 - SMTP
        • 23 - Telnet
        • 53 - DNS
        • 80/443 - HTTP
        • 88 - Kerberos
        • 111 - RPC
        • 135 - msrpc
        • 139/445 - SMB
        • 389/636 - LDAP
        • 1433 - MSSQL
        • 5985/5986 - wsman
  • 초기 침투
    • CVEs
      • CVE-2025-31486
    • Phishing
      • Command File
      • EXE + LNK
      • wax
      • Microsoft Word
    • Web
      • Quary Language
        • SQL
        • GraphQL
      • File Upload
      • File Download
      • XSS
      • SSRF
      • CSRF
      • Open Redirect
      • SOP / CORS
    • ZIP Slip
  • 지속성
    • Active Directory
      • Golden Tickets
      • Diamond Tickets
      • DC Shadow
      • RID Hijacking
      • Certificate
    • Local
      • Task Scheduler
      • Startup Folder
      • Registry AutoRun
      • COM
      • WMI Event Subscription
      • SSH Key Injection
      • DLL Hijacking
      • DLL SideLoading
      • Create Account
  • 권한 상승
    • Active Directory
      • DACL
        • ReadGMSAPassword
        • ReadLAPSPassword
        • ForceChangePassword
        • AddSelf
        • GenericAll
        • Inherited GenericAll
        • WriteOwner
        • GenericWrite
        • WriteProperty
        • WriteSPN
        • AddMembers
        • WriteGPO
        • AddAllowedToAct
        • AllExtendedRights
        • Restore-ADObject
      • AD CS
        • Abuse Permissions
        • ESC1
        • ESC2
        • ESC3
        • ESC4
        • ESC5
        • ESC6
        • ESC7
        • ESC8
        • ESC9
        • ESC10
        • ESC11
        • CVE-2022-26923
        • Non-PKINIT
      • MS14-068
      • Server Operators
      • DnsAdmins
      • noPac
      • Silver Tickets
      • KrbRelayUp
      • GPO
    • Windows
      • SeImpersonatePrivilege
      • Unquoted Service Path
      • Weak Service Permissions
      • Weak Service Binary Permissions
      • UAC Bypass
      • Always Install Elevated
      • Autoruns
      • Credential Manager
      • Local Service Account
  • 민감정보 탈취
    • Active Directory
      • Kerberoasting
      • Timeroasting
      • Targeted Kerberoast
      • ASRep-Roasting
      • AS Requested Service Tickets
      • Unconstrained Delegation
      • Constrained Delegation
      • Alternate Service Name
      • Resource Based Constrained Delegation
      • Shadow Credentials
      • DCSync
      • LSASS
      • Backup Operators
      • SeEnableDelegationPrivilege
      • Domain Cached Credentials
      • Network Access Account Credentials
      • DPAPI Backup Key
    • Windows
      • Unattended File
      • DPAPI
      • Hard-coding Credentials
      • SeBackupPrivilege
  • 측면 이동
    • File Transfer
      • SCP
      • ZIP
      • ncat
      • Python
      • PowerShell
      • certutil
      • wget
      • SMB
      • Base64
      • FTP
      • WebDav
      • cURL
    • Pivoting
      • SOCKS
      • Proxifier
      • Remote Port Forwarding
    • NTLM Relay
    • WebDAV Relay
    • WinRM
    • PsExec
    • WMI
    • DCOM
    • RDP
    • Port Forwarding
    • Domain Trust Discovery
  • 사용자 가장
    • Pass the Hash
  • Pass the Ticket
  • Overpass the Hash
  • Token Impersonation
  • Make Token
  • Process Injection
  • Domain Trust
    • Active Directory Trusts
    • Two-way Domain Trust
    • One-way Domain Trust
  • ETC
    • CS
      • Active Directory
      • Kerberos
      • NTLM
      • PKINIT
      • Integrity
      • Registry
      • Delegation
      • OAuth 2.0
      • S4U
      • SCCM
      • SID History
      • TRUSTWORTHY
      • Link Server Passwords
      • SSL Pinning
    • Tools
      • Mindmap
      • Cobalt Strike
      • BloodHound
      • LDAP Search
      • Hydra
      • Hashcat
      • Ligolo-ng
    • Home Lab
Powered by GitBook
On this page
  • Jump Host
  • Port Forwarding
  • Local Port Forwarding
  • Remote Port Forwarding
  • Direct Tunneling
  • Indirect Tunneling
  • Dynamic Port Forwarding
  • References

Was this helpful?

Export as PDF
  1. 측면 이동

Port Forwarding

PreviousRDPNextDomain Trust Discovery

Last updated 1 month ago

Was this helpful?

로컬 영역에 서비스를 실행하고는 있지만 바인딩 가능한 IP 대역을 내부망으로 제한하거나, 방화벽 등을 통해서 외부망에서는 접속하거나 탐지할 수 없게 조치를 해둔 프로토콜의 경우 포트 포워딩을 통해서만 직접 통신할 수 있습니다. SSH를 이용해서 쉘을 획득한 경우 SSH를 이용한 로컬 포트 포워딩이 가능하지만 그렇지 않은 환경에서는 적절한 도구를 사용해줄 수 있습니다.

파일을 다운로드 한 뒤 압축을 해제하여 exe 파일로 변환합니다.

만약 내부망에 커버로스 프로토콜이 실행 중일 경우 커버로스팅과 같은 공격은

88번 포트 외에도 389번 포트가 필요합니다.

이럴 때는 포트포워딩 양식을 두번 연속 인자로 전달하여 사용합니다.

# Kali에서 chisel Server 활성화
chisel server --reverse -port <Server Port>

# Windows에서 chisel Client로 연결
.\chisel.exe client <Kali IP>:<Server Port> R:<Remote Port>:127.0.0.1:<Kali Port>

# 다중 포트 포워딩
.\chisel.exe client <Kali IP>:<Server Port> R:88:127.0.0.1:88 R:389:127.0.0.1:389
# 명령어 양식 
ssh -L <Local Port>:<Remote IP>:<Remote Port> <USER>@<Remote IP>
ssh -R <Remote Port>:<Local IP>:<Local Port> <Attacker>@<Remote IP>

Jump Host

위와 같이 타겟과 로컬의 1:1 매치 상황은 비현실적입니다. 실제로 터널링 기술을 원하는 호스트에 1:1 상황으로 사용했다면, 방화벽 등의 장애물을 건너뛰는 것이 힘들 뿐 아니라 호스트 PC가 종료되었을 때 직원의 PC가 재부팅될 때까지 연결할 수 없습니다. 그래서 보통의 경우 SSH 서버를 장악한 뒤, 해당 서버에서 터널링을 통해 개별 호스트에 데이터를 송수신하는 방법을 사용합니다.

점프 호스트 개념은 방화벽을 우회하여 쉘, 프로토콜 사용을 위한 해킹 기술은 아닙니다. 간이 VPN이 필요하거나, 간접 연결을 통하여 보안상 이점을 챙기려는 경우, 사용하던 서비스나 서드파티가 변경된 경우 등에 사용되는 기술입니다. 이때 내가 직접 접근할 수는 없지만, 장악한 사내망 호스트를 통하여 타겟에 접근이 가능할 때 장악한 호스트를 통해 점프하여 터널링 한다고 하여 점프 호스트라고 부릅니다.

Port Forwarding

Local Port Forwarding

로컬 포트 포워딩은 바인드 쉘과 동작 방식이 비슷합니다. 목적지 호스트와의 통신을 연결하는 패킷을 전송하여 대상과 연결하여 터널을 생성한 뒤, 그 터널을 이용하여 원하고자 하는 활동을 하는 것입니다. 가장 간단한 매커니즘의 포트 포워딩이기도 합니다. 위와 같은 환경에서는 Kali 호스트에서 내부망 1.1.2.2 호스트로의 직접적인 통신은 불가능합니다. 때문에 접근 가능한 DMZ의 1.1.1.1 특정 포트와의 연결을 통하여 1.1.2.2와 터널을 맺습니다.

예를 들어, Kali의 8888 포트와 1.1.1.1의 8888 포트를 연결하고, 1.1.2.1의 8888 포트와 1.1.2.2의 8888 포트를 연결한다면 Kali에서 8888 트래픽 전송은 1.1.1.1:8888 , 1.1.2.1:8888 을 거쳐 1.1.2.2:8888로 도달합니다.

Remote Port Forwarding

리모트 포트 포워딩은 대상에 대한 직접적인 접근이 불가능하거나 다른 목적으로 패킷을 받기 위해서 사용합니다. 로컬 포트 포워딩이 바인드 쉘과 비슷했다면, 리모트 포트 포워딩은 리버스 쉘과 비슷합니다. 즉 C2 서버와 외부망의 분리를 위해 HTTP 리다이렉트 서버를 구축한 후, HTTP 서버에서 리모트 포트 포워딩을 통해 들어오는 패킷을 C2서버로 곧장 전달하는 것과 같이 망 분리 환경에서 보안 상 이점을 위하여 사용하거나, 리버스 쉘 연결을 위해 사용합니다.

Direct Tunneling

위 다이어그램과 같이 직접 접근이 불가능한 2.2.2.2에 연결을 위해 1.1.1.1을 점프 호스트로 설정하여 SSH 연결을 통한 터널링 기술은 아래 명령으로 할 수 있습니다.

# SSH 로컬 포트 포워딩
# 예시 : ssh -L 127.0.0.1:8888:2.2.2.2:8888 jump@1.1.1.1

# SSH 리모트 포트 포워딩
# 예시 : ssh -R 127.0.0.1:8888:0.0.0.0:8888 jump@1.1.1.1

# SSH ProxyCommand 포트 포워딩
# 예시 : ssh -o ProxyCommand="<SSH 파일위치> -W %h:%p <Jump>@<Jump IP>" -L 127.0.0.1:8888:127.0.0.1:8888 Target@2.2.2.2

Indirect Tunneling

하지만 점프해야할 호스트가 많아질 수록 그때마다 SSH 터널링 하는 것은 번거로우며 복잡한 방법이기 때문에 SSH에서는 점프 플래그인 J를 제공합니다. J 플래그 뒤에 네트워크 대역만 올바르게 입력해줍니다.

# J 플래그를 통한 점프 로컬 포트 포워딩
# 예시 : ssh -L 127.0.0.1:8888:1.1.3.2:8888 -J jump1@1.1.1.1,jump2@1.1.2.2,jump3@1.1.3.2

# SSH ProxyCommand 포트 포워딩
# 예시 : ssh -o ProxyCommand="<SSH 파일위치> -W %h:%p jump1@1.1.1.1" -o ProxyCommand="<SSH 파일위치> -W %h:%p jump2@1.1.2.2"  -L 127.0.0.1:8888:127.0.0.1:8888 target@1.1.3.2

Dynamic Port Forwarding

동적 포트 포워딩과 로컬/리모트 포트 포워딩의 확연한 차이는 목적지 포트 설정에 있습니다. 앞서 확인한 포트 포워딩들은 모두 목적지의 포트를 명확히 설정하는 것에 비해 동적 포트 포워딩은 로컬에 대한 포트만 설정하며 점프 호스트(피벗)이 SOCKS 프록시 역할을 합니다. Proxychains 도구를 사용하면 도구를 사용했을 때 해당 명령의 패킷이 SOCKS 프록시를 통해서 타겟 호스트에 직접 전달됩니다.

References

chisel_1.10.1_windows_386.gz
Hacking V: Tunnelling Techniques / The Hacking Guide / Pentest Training / binsec.wiki | pentesting - secure coding - forensic - hardening
Release v1.10.1 · jpillora/chiselGitHub
JumpHost (특정 서버를 경유해 SSH 사용하기)TISTORY
Logo
점프서버(Bastion Host)란 무엇인가? 프록시랑 다른개념?TISTORY
Logo
SSH Proxy 와 점프호스트 ( 경유서버를 이용한 목적서버 연결 ) | QGP
Logo
Dynamic Port Forwarding & ProxyChains | 레드팀 플레이북
Logo
Logo
https://nice-engineer.tistory.com/entry/JumpHost-%ED%8A%B9%EC%A0%95-%EC%84%9C%EB%B2%84%EB%A5%BC-%EA%B2%BD%EC%9C%A0%ED%95%B4-SSH-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0
Logo