导航:首页 > IDC知识 > 服务器发现

服务器发现

发布时间:2020-12-26 13:38:10

1、发现服务器上开启的TCP服务

用netstat -a

编程嘛,自己做一个端口扫描器

#include <libnet.h>
#include <pcap.h>
#include "hacking.h"

#define MAX_EXISTING_PORTS 30

void caught_packet(u_char *, const struct pcap_pkthdr *, const u_char *);
int set_packet_filter(pcap_t *, struct in_addr *, u_short *);

struct data_pass {
int libnet_handle;
u_char *packet;
};

int main(int argc, char *argv[]) {
struct pcap_pkthdr cap_header;
const u_char *packet, *pkt_data;
pcap_t *pcap_handle;
char errbuf[PCAP_ERRBUF_SIZE]; // Same size as LIBNET_ERRBUF_SIZE
char *device;
u_long target_ip;
int network, i;
struct data_pass critical_libnet_data;
u_short existing_ports[MAX_EXISTING_PORTS];

if((argc < 2) || (argc > MAX_EXISTING_PORTS+2)) {
if(argc > 2)
printf("Limited to tracking %d existing ports.\n", MAX_EXISTING_PORTS);
else
printf("Usage: %s <IP to shroud> [existing ports...]\n", argv[0]);
exit(0);
}

target_ip = libnet_name_resolve(argv[1], LIBNET_RESOLVE);
if (target_ip == -1)
fatal("Invalid target address");

for(i=2; i < argc; i++)
existing_ports[i-2] = (u_short) atoi(argv[i]);

existing_ports[argc-2] = 0;

device = pcap_lookupdev(errbuf);
if(device == NULL)
fatal(errbuf);

pcap_handle = pcap_open_live(device, 128, 1, 0, errbuf);
if(pcap_handle == NULL)
fatal(errbuf);

critical_libnet_data.libnet_handle = libnet_open_raw_sock(IPPROTO_RAW);
if(critical_libnet_data.libnet_handle == -1)
libnet_error(LIBNET_ERR_FATAL, "can't open network interface. -- this program must run
as root.\n");

libnet_init_packet(LIBNET_IP_H + LIBNET_TCP_H, &(critical_libnet_data.packet));
if (critical_libnet_data.packet == NULL)
libnet_error(LIBNET_ERR_FATAL, "can't initialize packet memory.\n");

libnet_seed_prand();

set_packet_filter(pcap_handle, (struct in_addr *)&target_ip, existing_ports);

pcap_loop(pcap_handle, -1, caught_packet, (u_char *)&critical_libnet_data);
pcap_close(pcap_handle);
}

/* Sets a packet filter to look for established TCP connections to target_ip */
int set_packet_filter(pcap_t *pcap_hdl, struct in_addr *target_ip, u_short *ports) {
struct bpf_program filter;
char *str_ptr, filter_string[90 + (25 * MAX_EXISTING_PORTS)];
int i=0;

sprintf(filter_string, "dst host %s and ", inet_ntoa(*target_ip)); // Target IP
strcat(filter_string, "tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack = 0");

if(ports[0] != 0) { // If there is at least one existing port
str_ptr = filter_string + strlen(filter_string);
if(ports[1] == 0) // There is only one existing port
sprintf(str_ptr, " and not dst port %hu", ports[i]);
else { // Two or more existing ports
sprintf(str_ptr, " and not (dst port %hu", ports[i++]);
while(ports[i] != 0) {
str_ptr = filter_string + strlen(filter_string);
sprintf(str_ptr, " or dst port %hu", ports[i++]);
}
strcat(filter_string, ")");
}
}
printf("DEBUG: filter string is \'%s\'\n", filter_string);
if(pcap_compile(pcap_hdl, &filter, filter_string, 0, 0) == -1)
fatal("pcap_compile failed");

if(pcap_setfilter(pcap_hdl, &filter) == -1)
fatal("pcap_setfilter failed");
}

void caught_packet(u_char *user_args, const struct pcap_pkthdr *cap_header, const u_char
*packet) {
u_char *pkt_data;
struct libnet_ip_hdr *IPhdr;
struct libnet_tcp_hdr *TCPhdr;
struct data_pass *passed;
int bcount;

passed = (struct data_pass *) user_args; // Pass data using a pointer to a struct

IPhdr = (struct libnet_ip_hdr *) (packet + LIBNET_ETH_H);
TCPhdr = (struct libnet_tcp_hdr *) (packet + LIBNET_ETH_H + LIBNET_TCP_H);

libnet_build_ip(LIBNET_TCP_H, // Size of the packet sans IP header
IPTOS_LOWDELAY, // IP tos
libnet_get_prand(LIBNET_PRu16), // IP ID (randomized)
0, // Frag stuff
libnet_get_prand(LIBNET_PR8), // TTL (randomized)
IPPROTO_TCP, // Transport protocol
*((u_long *)&(IPhdr->ip_dst)), // Source IP (pretend we are dst)
*((u_long *)&(IPhdr->ip_src)), // Destination IP (send back to src)
NULL, // Payload (none)
0, // Payload length
passed->packet); // Packet header memory

libnet_build_tcp(htons(TCPhdr->th_dport),// Source TCP port (pretend we are dst)
htons(TCPhdr->th_sport), // Destination TCP port (send back to src)
htonl(TCPhdr->th_ack), // Sequence number (use previous ack)
htonl((TCPhdr->th_seq) + 1), // Acknowledgement number (SYN's seq # + 1)
TH_SYN | TH_ACK, // Control flags (RST flag set only)
libnet_get_prand(LIBNET_PRu16), // Window size (randomized)
0, // Urgent pointer
NULL, // Payload (none)
0, // Payload length
(passed->packet) + LIBNET_IP_H);// Packet header memory

if (libnet_do_checksum(passed->packet, IPPROTO_TCP, LIBNET_TCP_H) == -1)
libnet_error(LIBNET_ERR_FATAL, "can't compute checksum\n");

bcount = libnet_write_ip(passed->libnet_handle, passed->packet,
LIBNET_IP_H+LIBNET_TCP_H);
if (bcount < LIBNET_IP_H + LIBNET_TCP_H)
libnet_error(LIBNET_ERR_WARNING, "Warning: Incomplete packet written.");
printf("bing!\n");
}

2、如何发现web服务器的相关问题

为何Web服务器是组织的门面并且提供了进入网络的简单方法。所有的Web服务器都与安全事件相关,一些更甚。最近安全焦点列出了微软IIS服务器的116个安全问题,而开放源码的Apache有80个。
策略许多Web服务器默认装有标准通用网关接口(CGI),例如ColdFusion,它可以用于处理恶意请求。既然它们很容易发现并且在root权限下运行,骇客开发易受攻击的CGI程序来摧毁网页,盗取信用卡信息并且为将来的入侵设置后门。通用法则是,在操作系统中移除样本程序,删除bin目录下的CGI原本解释程序,移除不安全的CGI原本,编写更好的CGI程序,决定你的Web服务器是否真的需要CGI支持。
检查Web服务器,只允许需要分发的信息驻留在服务器上。这个问题有时会被误解。大多数服务器在root下运行,所以骇客可以打开80端口,更改日志文件。他们等待进入80端口的连接。接受这个连接,分配给子程序处理请求并回去监听。子程序把有效的用户标识改为“nobody”用户并处理请求。当“服务器以root运行”时,并未向所设想的用户告警。这个警告是关于配置成以root运行子程序的服务器(例如,在服务器配置文件中指定root用户)。以root许可进入的每一个CGI原本都可以访问你的系统。
在“chroot”环境中运行Web服务器。运行chroot系统命令可以增强Unix环境中Web服务器的安全特性,因为此时看不到服务器上文件目录的任何部分——目录上的所有内容都不能访问。在chroot环境中运行服务器,你必需创建一整个微型root文件系统,包括服务器需要访问的所有内容,还包括特定的设备文件和共享库。你还要调整服务器配置文件中的全部路径名,使之与新的root目录相关联。
如果你的系统被用于攻击其他系统,小心引起诉讼。如果不能击退每一次攻击,至少确保你用于追溯恶意事件的审核文件记录信息的安全。

3、发现服务器有这个漏洞,怎么才能通过漏洞进入服务器..

去腾讯智慧安全申请个御点终端安全系统
申请好了之后,打开腾讯御点,选择修复漏洞
可以自动检测出电脑里面需要修复的漏洞然后一键修复

4、我总感觉有人在控制我的服务器 昨天回到我的服务器发现有人在远程控

你这个是放自己家的吗?居然可以这样快速拔网线。如果觉得被入侵了,可以先检查一下服务器,删除木马或者其它可疑文件,修改服务器密码。备份一下自己资料,重装一下系统。

5、求助服务器被挖矿程序入侵,如何排查

 新客户于最近向我们SINE安全公司咨询,说他的服务器经常卡的网站无法打开,远程连接

服务器的慢的要命,有时候PING值都达到300-500之间,还经常掉包,听客户这么一说,一般

会判断为受到了CC+DDOS混合流量攻击,再具体一问,说是机房那面没有受到流量攻击,这

就有点奇怪了,不是流量攻击,还导致服务器卡,网站无法打开,这是什么攻击?为了解决客

户服务器卡的问题,我们随即安排安全工程师对他的Linux服务器进行了安全检测与安全部署。

 

SSH远程登录客户的Linux服务器,查看当前的进程发现有一个特别的进程占用了百分之100

的CPU,而且会持续不断的占用,我们查了查该进程,发现不是linux的系统进程,我们对进程

的目录进行查看,发现该进程是一个木马进程,再仔细进行安全分析,才确定是目前最新的挖

矿木马病毒,挖的矿分很多种,什么比特币,什么罗门币的,太多太多,看来现在的挖矿技术

扩展到了入侵服务器进行肉鸡挖矿了。

挖矿木马的检测与清除

 

我们在系统的目录下发现了挖矿木马主要是以 Q99.sh命名的文件来控制客户的linux服务器,看

里面写的代码是以root权限运行,并自动启动计划任务,当服务器重启时继续执行计划任务,

导致客户怎么重启都于事无补,还是卡的要命。该木马代码还调用了一些Linux系统命令,bashe

bashd来挖矿,该命令是最直接也是占用CPU到顶峰的关键,太粗鲁了,这样的挖矿本身就会让

客户发现问题,看来挖矿者只顾着赚钱,不考虑长久之道了。

 

挖矿木马还设计了挖矿进程如果被客户强制停止后,会自动启动继续挖矿,达到不间断的挖矿,

仔细检查发现是通过设置了每个小时执行任务计划,远程下载shell挖矿木马,然后执行,检查

当前进程是否存在,不存在就启动挖矿木马,进行挖矿。

对客户的linux服务器进行详细了安全检测发现幸亏没有加密服务器的数据,以及感染蠕虫的病

毒,如果数据被加密那损失大了,客户是做平台的,里面的客户数据很重要,找出挖矿木马后,

客户需要知道服务器到底是如何被攻击的? 被上传挖矿木马的? 防止后期再出现这样的攻击

状况。

通过我们安全工程师的安全检测与分析,发现该服务器使用的是apache tomcat环境,平台的开

发架构是JSP+oracle数据库,apache tomcat使用的是2016年的版本,导致该apache存在严重

的远程执行命令漏洞,入侵者可以通过该漏洞直接入侵服务器,拿到服务器的管理员权限,

SINE安全工程师立即对apache 漏洞进行修复,并清除木马,至此问题得以解决,客户服务器

一切稳定运行,网站打开正常。

6、我的世界服务器里用透视mod会被发现吗?

反正我在玩的服务器有个插件叫:假矿插件
上次开透视看到了满满的钻石原矿和绿宝石原矿
当时我就惊呆了

7、在浏览器调用js脚本会不会被服务器发现?

你的脚本内容不会被服务器发现(也发现不了),但因为你使用脚本而产生的异常专请求属会被发现,例如你的点击脚本在1秒钟内点击了上千次造成上千次的服务器提交请求,这就异常了,肯定会被发现的,不过一般来讲服务器都有屏蔽的技术处理,会自动忽略单一IP下过多的请求。

8、CF开挂怎么老是被服务器发现?

最近开挂的人太多了。所以服务器的查挂系统也升级了。 要想不被发现,再开一个防止被服务器发现的挂。也就是程序修改器。

9、MX-M2608N复印机扫描时出现 没有发现所选服务器 请联系网络管理员 应该如何解决? 谢谢

检查显示抄器的电袭源是否插接良好?如果您的显示器的电源开关是轻触开关时,当给显示器加电时,应该会听到轻微的“辟啪”声,这时可判断显示器的开关电源电路良好。再显示器的电源开关是否已经开启?显示器的电源指示灯是否亮?当用手靠近显示器屏幕并慢慢移动是否有"咝咝"的声音,同时手上的汗毛有被吸起的感觉,这在检查显示器高压电路是否正常工作了。

10、登录网站的时候出现:"很抱歉系统发现错误!请到服务器上面查看详细信息"

这是指服务器上出现服务器错误。与个人操作无关。
出现这种错误,网站管理员会及时处理,你可以过一段时间再访问。

与服务器发现相关的知识