整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          記錄一次帝國CMS模板被木馬入侵后清理的過程,其他C

          記錄一次帝國CMS模板被木馬入侵后清理的過程,其他CMS類似

          最近朋友的一個網(wǎng)站被掛了黑鏈,被叫去做技術(shù)支持==!

          簡單介紹一下具體情況:

          訪問網(wǎng)站:www.xinsanwen.cn顯示的是黑鏈地址,通過審查元素可以清晰的看到這些被加密過的文件。如果你看不懂這些符號沒關(guān)系,我們可以通過JS機(jī)密基本看到一些信息。


          記錄一次帝國CMS模板被木馬入侵后清理的過程,其他CMS類似【大佬勿噴】


          記錄一次帝國CMS模板被木馬入侵后清理的過程,其他CMS類似【大佬勿噴】


          可能很多小伙伴沒辦法審查元素,因?yàn)槟阋淮蜷_網(wǎng)址就跳轉(zhuǎn)走了,不要慌,知道君教你們一個簡單的辦法。【其他網(wǎng)站類似】

          1、先隨便打開一個網(wǎng)址:我一般打開百度,鼠標(biāo)右鍵查看源碼,然后把我們的域名復(fù)制過去就可以看到網(wǎng)站的html了。

          記錄一次帝國CMS模板被木馬入侵后清理的過程,其他CMS類似【大佬勿噴】

          記錄一次帝國CMS模板被木馬入侵后清理的過程,其他CMS類似【大佬勿噴】

          2、把html中的快照劫持代碼清除,【像這種代碼,一般存在模板中】

          記錄一次帝國CMS模板被木馬入侵后清理的過程,其他CMS類似【大佬勿噴】

          有小伙伴可能覺得把這個刪除就OK了,那你就大錯特錯,刪除這里只是第一步,你還得繼續(xù)找到核心的木馬文件,這種后門文件可能是一個,也可能是N個,在不借助外來工具的情況下,我們就需要一步步一個個文件夾去查看。當(dāng)然如果你有其他工具配合使用當(dāng)然更好。我一般使用D盾,如果是像織夢這樣的文件比較少的我會直接找,但是今天我朋友這個是帝國的,文件稍微有點(diǎn)多,一個個找太費(fèi)時間了,所以選擇D盾。

          3、將網(wǎng)站源碼下載到本地的一個文件夾內(nèi)。放哪都無所謂,一會好找就行。

          4、下載D盾,并解壓,打開。


          記錄一次帝國CMS模板被木馬入侵后清理的過程,其他CMS類似【大佬勿噴】


          5、自定義掃描(選中我們剛剛下載的源碼)

          記錄一次帝國CMS模板被木馬入侵后清理的過程,其他CMS類似【大佬勿噴】

          6、細(xì)觀察這個圖,上面第一列是木馬文件的路徑,級別越高,危害越大。后面有說明。

          記錄一次帝國CMS模板被木馬入侵后清理的過程,其他CMS類似【大佬勿噴】

          對于已知后門,直接刪除

          對于不確定的,我們可以拿帝國CMS源程序比對。

          刪除完畢。

          7、將本地文件打包上傳會網(wǎng)站。

          8、清除模板中的快照劫持代碼


          記錄一次帝國CMS模板被木馬入侵后清理的過程,其他CMS類似【大佬勿噴】


          這個文件夾下面,大家自行檢查。里面如果有被放的代碼,可以直接清除或是拿原來的模板覆蓋。

          對了,最后一步差點(diǎn)忘記了,記得去各個搜索引擎提交更新快照。怎么更新快照這邊就不繼續(xù)延展了,后面有時間再繼續(xù)。

          以上就是網(wǎng)站入侵后清除木馬方法。下面講下清除木馬后或是未掛馬之前防范方法。

          (1)建議修改后臺路徑,將e/admin修改成任意一個你喜歡的名字。

          (2)修改默認(rèn)用戶名和密碼

          (3)刪除e/install等不用文件夾

          (3)網(wǎng)上下載的程序或者模板建議先好好檢查下

          (4)不要被免費(fèi)的外殼所蒙蔽

          (5)平時多總結(jié)經(jīng)驗(yàn),這樣才能防范于未然

          以上,如果不更新的話,知道就建議可以將網(wǎng)站權(quán)限設(shè)為只讀!更安全!

          華社北京11月20日電 為有效應(yīng)對網(wǎng)絡(luò)安全威脅和風(fēng)險(xiǎn),保障網(wǎng)絡(luò)運(yùn)行安全,國家互聯(lián)網(wǎng)信息辦公室20日就《網(wǎng)絡(luò)安全威脅信息發(fā)布管理辦法(征求意見稿)》公開征求社會意見,對發(fā)布網(wǎng)絡(luò)安全威脅信息的行為作出規(guī)范。

          國家網(wǎng)信辦有關(guān)負(fù)責(zé)人表示,當(dāng)前,網(wǎng)絡(luò)安全產(chǎn)業(yè)迅猛發(fā)展,許多網(wǎng)絡(luò)安全研究者和網(wǎng)絡(luò)安全企業(yè)出于提高公民網(wǎng)絡(luò)安全意識、交流網(wǎng)絡(luò)安全技術(shù)等目的,積極向社會發(fā)布網(wǎng)絡(luò)安全威脅信息,為維護(hù)國家網(wǎng)絡(luò)空間安全作出貢獻(xiàn)。但是,網(wǎng)絡(luò)安全威脅信息的發(fā)布仍存在很多問題。為進(jìn)一步規(guī)范網(wǎng)絡(luò)安全威脅信息發(fā)布行為,國家網(wǎng)信辦會同公安部等有關(guān)部門依據(jù)職責(zé)制定了這一辦法的征求意見稿。

          根據(jù)征求意見稿,網(wǎng)絡(luò)安全威脅信息包括對可能威脅網(wǎng)絡(luò)正常運(yùn)行的行為,用于描述其意圖、方法、工具、過程、結(jié)果等的信息;以及可能暴露網(wǎng)絡(luò)脆弱性的信息。

          征求意見稿明確,發(fā)布的網(wǎng)絡(luò)安全威脅信息不得包含計(jì)算機(jī)病毒、木馬、勒索軟件等惡意程序的源代碼和制作方法;專門用于從事侵入網(wǎng)絡(luò)、干擾網(wǎng)絡(luò)正常功能、破壞網(wǎng)絡(luò)防護(hù)措施或竊取網(wǎng)絡(luò)數(shù)據(jù)等危害網(wǎng)絡(luò)活動的程序、工具;能夠完整復(fù)現(xiàn)網(wǎng)絡(luò)攻擊、網(wǎng)絡(luò)侵入過程的細(xì)節(jié)信息;數(shù)據(jù)泄露事件中泄露的數(shù)據(jù)內(nèi)容本身以及其他可能被直接用于危害網(wǎng)絡(luò)正常運(yùn)行的內(nèi)容等。

          “上述網(wǎng)絡(luò)安全威脅信息容易被惡意分子或網(wǎng)絡(luò)黑產(chǎn)從業(yè)人員直接利用,降低了網(wǎng)絡(luò)攻擊的門檻,因此從維護(hù)網(wǎng)絡(luò)安全的角度,要求發(fā)布網(wǎng)絡(luò)安全威脅信息時不得包含上述內(nèi)容。”國家網(wǎng)信辦有關(guān)負(fù)責(zé)人表示,網(wǎng)絡(luò)安全從業(yè)者、愛好者仍可通過多種方式加強(qiáng)原理和技術(shù)研究,提高網(wǎng)絡(luò)安全能力水平。

          征求意見稿要求,發(fā)布網(wǎng)絡(luò)和信息系統(tǒng)被攻擊破壞、非法侵入等網(wǎng)絡(luò)安全事件信息前,應(yīng)向該事件發(fā)生所在地地市級以上公安機(jī)關(guān)報(bào)告。未經(jīng)政府部門批準(zhǔn)和授權(quán),任何企業(yè)、社會組織和個人發(fā)布網(wǎng)絡(luò)安全威脅信息時,標(biāo)題中不得含有“預(yù)警”字樣。


          park-Submit 提交命令

          啟動進(jìn)程 SparkSubmit: (SparkSubmit.scala)

          --> main //啟動進(jìn)程

          --> SparkSubmitArguments() //首先通過此類獲取 Spark-Submit參數(shù)

          --> 通過SparkSubmitArguments類屬性action判斷 Spark-Submit 操作(默認(rèn)為SUBMIT)

          --> submit() //action為SUBMIT

          --> prepareSubmitEnvironment() //準(zhǔn)備提交環(huán)境

          --> childMainClass=args.mainClass //deployMode==CLIENT

          --> childMainClass=YARN_CLUSTER_SUBMIT_CLASS

          //deployMode==Cluster ("org.apache.spark.deploy.yarn.YarnClusterApplication")


          Scala

          val (childArgs, childClasspath, sparkConf, childMainClass)=prepareSubmitEnvironment(args) //函數(shù)返回的是個Tuple,此處用到了一個模式匹配

          --> 判斷是否是standalone模式:

          --> doRunMain() //會先判斷傳入?yún)?shù)代理用戶 proxyUser

          --> runMain(childArgs, childClasspath, sparkConf, childMainClass, args.verbose)

          //將之前準(zhǔn)備的參數(shù)傳遞給此函數(shù)

          --> Thread.currentThread.setContextClassLoader(loader) //默認(rèn)使用當(dāng)前線程的類加載器,然后從類加載器中讀取 jar包等數(shù)據(jù),然后設(shè)定一些參數(shù)。

          --> mainClass=Utils.classForName(childMainClass) //然后反射加載類,獲取到了mainClass

          --> new JavaMainApplication(mainClass) //根據(jù)mainClass創(chuàng)建app對象

          --> app.start(childArgs.toArray, sparkConf) //判斷類中有沒有main方法,還要判斷main方法是否是static

          --> mainMethod.invoke(null, args) //調(diào)用main方法


          Client

          --> YarnClusterApplication (org.apache.spark.deploy.yarn.Client.scala)

          --> new Client(new ClientArguments(args), conf)

          --> private val yarnClient =YarnClient.createYarnClient

          --> YarnClient client=new YarnClientImpl()

          --> AM 相關(guān)配置

          -->client.run()

          --> this.appId =submitApplication() //會返回一個全局 app id

          --> launcherBackend.connect() //創(chuàng)建后臺鏈接

          --> yarnClient.init(hadoopConf)

          --> serviceInit(config); //overwrite了抽象類AbstractService的serviceInit函數(shù) (YarnClientImpl extends YarnClient extends AbstractService)

          --> timelineDTRenewer=getTimelineDelegationTokenRenewer(conf);

          --> renewer=SecurityUtil.getServerPrincipal(rmPrincipal, rmHost);

          --> yarnClient.start() //啟動與Yarn服務(wù)器之間的鏈接


          // Get a new application from our RM

          --> val newApp=yarnClient.createApplication()

          --> val newAppResponse=newApp.getNewApplicationResponse() //獲取返回信息

          --> appId=newAppResponse.getApplicationId() //獲取appID


          // Set up the appropriate contexts to launch our AM

          --> val containerContext=createContainerLaunchContext(newAppResponse)

          //This sets up the launch environment, java options, and the command for launching the AM (封裝一個command對象amContainer傳給Yarn,進(jìn)而Yarn就會知道應(yīng)該執(zhí)行什么指令)

          //封裝的指令 command=bin/java -server org.apache.spark.deploy.yarn.ApplicationMaster (Cluster)

          //封裝的指令 command=bin/java -server org.apache.spark.deploy.yarn.ExecutorLauncher (Client)

          --> val appContext=createApplicationSubmissionContext(newApp, containerContext)

          --> yarnClient.submitApplication(appContext) //通過yarn客戶端向RM提交應(yīng)用 (實(shí)質(zhì)提交的是指令,創(chuàng)建了一個AM進(jìn)程)


          ApplicationMaster(AM)

          --> main

          --> val amArgs=new ApplicationMasterArguments(args) //參數(shù)對象封裝

          --> master =new ApplicationMaster(amArgs) //創(chuàng)建應(yīng)用管理器對象

          --> private val client =doAsUser { new YarnRMClient() } //ApplicationMaster對象中有一個RM客戶端屬性;AM是在Yarn的NM中,但還是要跟RM鏈接申請資源。

          --> master.run()

          --> runImpl()

          --> runDriver() //Cluster

          --> startUserApplication() //啟動用戶應(yīng)用,也就是--calss 指定的類


          Scala

          val mainMethod=userClassLoader.loadClass(args.userClass)

          .getMethod("main", classOf[Array[String]]) //利用類加載器,加載用戶定義的類,然后獲取main方法

          --> val userThread=new Thread{....} //創(chuàng)建一個用戶線程

          --> userThread.setName("Driver") //給線程命名

          --> userThread.start() //啟動Driver線程 (在AM上),執(zhí)行的就是剛才獲取到的用戶類中的main方法

          // AM 和 RM 是做資源調(diào)度的,而 Driver線程 是用來做計(jì)算的;資源 和 計(jì)算 沒有直接鏈接,為了降低耦合性 資源 跟 計(jì)算 之間加了 AM;所以說 AM 是一個中間的對象,既能跟RM資源交互,又能夠跟 Driver 計(jì)算交互。


          --> registerAM(sc.getConf, rpcEnv, driverRef, sc.ui.map(_.webUrl)) //注冊 AM

          --> val driverUrl=RpcEndpointAddress(.....) //RPC鏈接需要終端地址,此處是Driver端的地址

          --> allocator =client.register(....) //此處的client是YarnRMClient對象,就是為了向RM申請資源用的; allocator是YarnAllocator類對象。

          --> allocator.allocateResources() // AM 與 RM 建立鏈接之后,開始分配資源

          --> handleAllocatedContainers(allocatedContainers.asScala) //分配到容器資源之后,就開始處理容器資源

          --> 本地化操作(優(yōu)先位置:移動數(shù)據(jù)不如移動計(jì)算;當(dāng)需要發(fā)送計(jì)算給Executor時,最好發(fā)送到其數(shù)據(jù)所在的節(jié)點(diǎn)。)如果不能保證優(yōu)先位置,也可以保證節(jié)點(diǎn)本地化(node-local),但是同一臺節(jié)點(diǎn)也可能資源不夠,可以保證 機(jī)架本地化(rack-local)

          --> runAllocatedContainers(containersToUse) //處理好Container之后,就開始運(yùn)行這些Container

          --> launcherPool.execute //這里用到一個 緩沖的守護(hù)線程池 launcherPool,它是ThreadUtils.newDaemonCachedThreadPool類對象。

          --> new ExecutorRunnable(.....).run

          --> var nmClient: NMClient=_ //ExecutorRunnable對象中包括一個nmClient成員,用來供AM與NM之間建立鏈接

          --> startContainer()

          --> val commands=prepareCommand() //又在準(zhǔn)備command對象:command=/bin/java -server org.apache.spark.executor.CoarseGrainedExecutorBackend

          // 說明 AM 向 其他NM 發(fā)送一個指令,在其他 NM 上創(chuàng)建了一個java進(jìn)程(也就是Executor的后臺程序)。

          --> userClassThread.join() //將Driver線程進(jìn)行join操作,表示Driver線程如果不執(zhí)行完,邏輯不會往下走的;join 是把另外一個線程加入到當(dāng)前線程中,目的是保證被加入的線程能夠執(zhí)行完。


          CoarseGrainedExecutorBackend(Executor)

          --> main

          --> run(driverUrl, executorId, hostname, cores, appId, workerUrl, userClassPath)

          --> env.rpcEnv.awaitTermination() //等待環(huán)境配置好Executor要與其他進(jìn)程進(jìn)行交互,就需要配置終端

          --> env.rpcEnv.setupEndpoint("Executor", new CoarseGrainedExecutorBackend(

          env.rpcEnv, driverUrl, executorId, hostname, cores, userClassPath, env))

          --> var executor: Executor //在后臺程序CoarseGrainedExecutorBackend類中又一個Executor的成員對象 ;所以接下來的任務(wù)實(shí)際是發(fā)送給后臺程序的,然后由其成員對象Executor執(zhí)行計(jì)算;

          //后臺程序CoarseGrainedExecutorBackend類繼承了ThreadSafeRpcEndpoint終端類,此類描述如下:


          Scala

          * An end point for the RPC that defines what functions to trigger given a message.

          * It is guaranteed that `onStart`, `receive` and `onStop` will be called in sequence.

          * The life-cycle of an endpoint is:

          * {@code constructor -> onStart -> receive* -> onStop}

          //由上可看出,后臺程序CoarseGrainedExecutorBackend類也是一個終端類,也會有終端的生命周期 constructor -> onStart -> receive* -> onStop。

          --> onStart()

          --> ref.ask[Boolean](RegisterExecutor(executorId, self, hostname, cores, extractLogUrls)) //它向Driver 反向注冊

          --> recevie()

          --> case RegisteredExecutor //當(dāng)接收到 Driver返回的“注冊完成”,則表示注冊成功,緊接著創(chuàng)建Executor對象

          --> case LaunchTask(data) //當(dāng)收到LauchTask表示要啟動任務(wù)


          主站蜘蛛池模板: 亚洲AV本道一区二区三区四区| 亚洲福利电影一区二区?| 人体内射精一区二区三区| 国产嫖妓一区二区三区无码| 夜夜精品视频一区二区| 一本大道在线无码一区| 国产精品亚洲不卡一区二区三区| 成人区人妻精品一区二区不卡网站| 亚洲日韩国产精品第一页一区| 熟妇人妻AV无码一区二区三区| 另类免费视频一区二区在线观看| 日本在线视频一区二区三区| 国产成人免费一区二区三区| 一区三区三区不卡| 一区国严二区亚洲三区| 国产无码一区二区在线| 国产精品免费一区二区三区| 秋霞日韩一区二区三区在线观看| 成人精品一区二区激情| 蜜桃无码一区二区三区| eeuss鲁片一区二区三区| 日韩三级一区二区| 香蕉久久ac一区二区三区| 亚洲一区二区三区丝袜| 国产成人久久一区二区不卡三区| 国产成人一区二区三区视频免费 | 久久婷婷久久一区二区三区| 久久精品午夜一区二区福利| 午夜性色一区二区三区免费不卡视频| 国模无码一区二区三区不卡| 嫩B人妻精品一区二区三区| 一区二区在线视频| 日韩一区在线视频| 香蕉免费一区二区三区| 无码一区二区三区亚洲人妻| 红桃AV一区二区三区在线无码AV| 国产精品熟女一区二区| 日韩精品一区二区三区国语自制 | 夜夜嗨AV一区二区三区| 亚洲高清偷拍一区二区三区| 无码国产精品久久一区免费|