RootKit端口深层隐藏

╰半橙微兮° 2022-11-21 11:26 264阅读 0赞

RootKit端口深层隐藏

用户态下隐藏端口信息,就是把/proc/下端口相关信息过滤掉。具体来说,看下面一张表格:
在这里插入图片描述
可以看一下net/ipv4/tcp.cnet/ipv4/tcp_ipv4.c的开头注释,列举了 TCP/IP 协议栈的开发者们。

下面我们以表格第一行的IPv4版本TCP为例,做端口隐藏实验。

首先看一下cat /proc/net/tcp
在这里插入图片描述
我们再看一下tcp4_seq_show

  1. // net/ipv4/tcp_ipv4.c
  2. #define TMPSZ 150
  3. static int tcp4_seq_show(struct seq_file *seq, void *v)
  4. {
  5. struct tcp_iter_state *st;
  6. struct sock *sk = v;
  7. seq_setwidth(seq, TMPSZ - 1);
  8. if (v == SEQ_START_TOKEN) {
  9. seq_puts(seq, " sl local_address rem_address st tx_queue "
  10. "rx_queue tr tm->when retrnsmt uid timeout "
  11. "inode");
  12. goto out;
  13. }
  14. st = seq->private;
  15. if (sk->sk_state == TCP_TIME_WAIT)
  16. get_timewait4_sock(v, seq, st->num);
  17. else if (sk->sk_state == TCP_NEW_SYN_RECV)
  18. get_openreq4(v, seq, st->num);
  19. else
  20. get_tcp4_sock(v, seq, st->num);
  21. out:
  22. seq_pad(seq, '\n');
  23. return 0;
  24. }
  25. // fs/seq_file.c
  26. void seq_puts(struct seq_file *m, const char *s)
  27. {
  28. int len = strlen(s);
  29. if (m->count + len >= m->size) {
  30. seq_set_overflow(m);
  31. return;
  32. }
  33. memcpy(m->buf + m->count, s, len);
  34. m->count += len;
  35. }

发表评论

表情:
评论列表 (有 0 条评论,264人围观)

还没有评论,来说两句吧...

相关阅读