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、登錄網站的時候出現:"很抱歉系統發現錯誤!請到伺服器上面查看詳細信息"
這是指伺服器上出現伺服器錯誤。與個人操作無關。
出現這種錯誤,網站管理員會及時處理,你可以過一段時間再訪問。