linux权限机制保护,所以文件所有者可以决定其文件的扩展属性可以被谁看到和被修改; 在ext2,ext3,ext4文件系统上,如果想设置user 与 文件关联,需要在文件系统挂载的时候使用user_xattr 选项:mount –o user_xattr device directory;在ext2/3/4文件系统中,与一文件关联地所有EA命名和EA值地总字节数不会超过单个逻辑磁盘块的大小:1024字节、2048 字节或4096字节; 关于扩展属性的操作函数位于:/usr/include/x86_64-linux-gnu/sys/ #include<sys/xattr.h> // 使用此头文件进行扩展属性的操作 Btrfs, OrangeFS, Lustre, OCFS2 1.6, ZFS, and F2FS filesystems support extended attributes (abbreviated xattr Extended_file_attributes https://en.wikipedia.org/wiki/Lustre_(file_system) http://man7.org/linux/man-pages/man7/xattr
', 121 )); // bool(true) var_dump(xattr_set($file, 'Description', 'shuo ming', XATTR_ROOT)); // bool( 然后使用 xattr_set() 就可以设置文件的扩展属性了。 ')); // bool(false) var_dump(xattr_get($file, 'Description', XATTR_ROOT)); // string(9) "shuo ming" xattr_get 配合上面的 xattr_list() 函数就可以获取某个文件的所有扩展属性信息。如果我们不增加 XATTR_ROOT 参数的话,是无法读取到 root命名空间 中的内容的。 xattr 相关的操作。
可以通过xattr查看文件的扩展属性. xattr 的参数说明 // 清除文件的所扩展属性 xattr -c android-studio-ide-145.3276617-mac.dmg 也可以通过 - d 的属性 xattr -d com.apple.FinderInfo android-studio-ide-145.3276617-mac.dmg 清除目录下所有文件的属性 find . -name "*.*" -exec xattr -c {} \; 经比对,所有锁定的文件里面都有com.apple.FinderInfo属性,所以通过-d把其清除掉,也可恢复。
在lustre内核中定义XATTR_LUSTRE_LOV为lustre.lov。 #define XATTR_LUSTRE_LOV XATTR_LUSTRE_PREFIX"lov" // 从解析结果来看,存储的是文件的stripe信息,和lfs getstripe得到的信息类似[root 在内核定义定义XATTR_NAME_LINK。 >#define XATTR_SIZE_MAX 65536#define XATTR_LUSTRE_LOV "lustre.lov"#define XATTR_NAME_LINK "trusted.link "#define XATTR_NAME_LMA "trusted.lma"#define XATTR_NAME_LOV "trusted.lov"/** * File IDentifier
这时可通过在终端中输入命令 sudo xattr -d com.apple.quarantine /Applications/xxx.app解决,其中xxx.app是出问题的APP名称,如名称中有空格, (base) bennyrhysdeMacBook-Pro:~ bennyrhys$ sudo xattr -d com.apple.quarantine /Applications/Sublime Text.app xattr: No such file: /Applications/Sublime xattr: No such file: Text.app (base) bennyrhysdeMacBook-Pro :~ bennyrhys$ sudo xattr -d com.apple.quarantine /Applications/Sublime\ Text.app
"trusted.lov" #define XATTR_NAME_LMA "trusted.lma" #define XATTR_NAME_LMV "trusted.lmv" #define XATTR_NAME_DEFAULT_LMV "trusted.dmv" #define XATTR_NAME_LINK "trusted.link " #define XATTR_NAME_FID "trusted.fid" #define XATTR_NAME_VERSION "trusted.version" #define XATTR_NAME_SOM "trusted.som" #define XATTR_NAME_HSM "trusted.hsm" #define XATTR_NAME_LFSCK_BITMAP "trusted.lfsck_bitmap" #define XATTR_NAME_DUMMY "trusted.dummy" /***************XATTR_NAME_LMV 属性的值的定义
mdt_thread_info *info, struct mdt_lock_handle *lhc) { // 查找root节点信息,根据请求加锁 result = mdt_lock_root_xattr lod_sub_xattr_set(XATTR_NAME_LOV) { // dt_xattr_set函数指针,设置文件的trusted.lov osd_xattr_set ) { mdd_links_rename() { mdd_links_write(){ // mdo_xattr_set 函数指针 lod_xattr_set () { // lod_sub_xattr_set函数指针 lod_xattr_set_internal() { lod_sub_xattr_set () { // dt_xattr_set // 设置文件的trusted.link osd_xattr_set()
3 移除隔离属性 (xattr) 批量脚本、CLI 工具被拦截 终端执行:bash
xattr -dr com.apple.quarantine "/Applications/XXX.app"< App 触发验证
M 系列 Mac 打不开 x86-only App 缺少 Rosetta 2 softwareupdate --install-rosetta --agree-to-license
xattr 删除后仍报错 内部脚本仍被隔离 xattr -r -d com.apple.quarantine MyApp.app
右键打开仍失败 App 文件受损或签名不完整 重新下载,或联系开发者重新签名
最佳实践 不常用但必需的无签名工具,使用 xattr 精准放行,不要关闭系统级防护。 7 命令速查表
任务 命令
单个 App 解除隔离 xattr -d com.apple.quarantine "/路径/XXX.app"
递归解除隔离 xattr -r -d com.apple.quarantine
system/lib # mount /dev/root on / type ext4 (rw,seclabel,relatime,block_validity,delalloc,barrier,user_xattr sbin/.magisk/mirror/system_root type ext4 (ro,seclabel,relatime,block_validity,delalloc,barrier,user_xattr block/system_root on /sbin/charger type ext4 (ro,seclabel,relatime,block_validity,delalloc,barrier,user_xattr ordered) /dev/block/dm-0 on /vendor type ext4 (ro,seclabel,relatime,block_validity,delalloc,barrier,user_xattr on /sbin/.magisk/mirror/vendor type ext4 (ro,seclabel,relatime,block_validity,delalloc,barrier,user_xattr
f ile.o fsync.o ialloc.o inode.o \ ioctl.o namei.o super.o symlink.o ext2-$(CONF iG_EXT2_FS_XATTR ) += xattr.o xattr_user.o xattr_trusted.o ext2-$(CONF iG_EXT2_FS_POSIX_ACL) += acl.o ext2-$(CONF iG_EXT2 _FS_SECURITY) += xattr_security.o ext2-$(CONF iG_EXT2_FS_XIP) += xip.o 模块的名字为ext2,由balloc.o、dir.o、file.o 等多个目标文件最终链接生成ext2.o 直至ext2.ko 文件,并且是否包括xattr.o、acl.o 等则取决于内核配置文件的配置情况,例如,如果CONFIG_ EXT2_FS_POSIX_ACL
在Linux生态中,多数文件系统(ext3/ext4/xfs等)支持"扩展文件属性"(xattr),该功能允许用户为文件添加元数据。 使用方式Ubuntu系统通过"attr"软件包提供操作工具:bash 体验AI代码助手 代码解读复制代码remnux@remnux:~/malwarezoo/xattr$ setfattr -n user.note sample.txt remnux@remnux:~/malwarezoo/xattr$ getfattr -d -n "user.note" sample.txt # file: sample.txtuser.note picture-$idx.b64done解码实现作者用C语言编写了PoC程序[3],可提取并重组隐藏负载:bash 体验AI代码助手 代码解读复制代码remnux@remnux:~/malwarezoo/xattr bash 体验AI代码助手 代码解读复制代码remnux@remnux:~/malwarezoo$ getfattr -Rd -m- . | grep "^# file:" | cut -d ":" -f2xattr
osdop_delete 删除对象操作 osdop_mapext 映射范围操作 osdop_sparse_read 稀少读操作 osdop_clonerange 克隆范围操作 osdop_getxattr 获取xattr 操作 osdop_setxattr 设置xattr操作 osdop_cmpxattr 比较xattr操作 osdop_rmxattr 移除xattr操作 osdop_resetxattrs 重置 xattr操作 osdop_tmap_up tmap更新操作 osdop_tmap_put tmap推送操作 osdop_tmap_get tmap获取操作 osdop_call 调用执行操作
To enable user-defined extended attributes for ext3 file systems (i.e. device), use: tune2fs -o user_xattr attributes for a file system can be enabled at mount time, as in: mount /dev/device /path/to/cache -o user_xattr
典型标志 说明 Gatekeeper spctl 「已损坏」 校验开发者签名、苹果公证(Notarization)和安全策略 隔离属性 (Quarantine) com.apple.quarantine xattr 方法 2|移除隔离属性(最常用) # 假设已把 App 拖进 /Applications sudo xattr -dr com.apple.quarantine /Applications/XXX.app 重新签名后再删隔离属性: sudo xattr -dr com.apple.quarantine /Applications/XXX.app 适合:源码构建、自行打包或已被破解修改的 App。 可能是 App 内部还有隔离属性,确认已递归移除或用 xattr -lr /Applications/XXX.app 检查 关闭 Gatekeeper 会永久生效吗? 新版 Gatekeeper/XProtect 数据库可能判定旧版 App 不安全,需要开发者重新签名或公证 7 · 命令速查表 # 一次性放行 xattr -dr com.apple.quarantine
方法 3 — 去除隔离属性 com.apple.quarantine(精确到单个文件) # 终端执行,替换路径为实际 App 的绝对路径 xattr -d com.apple.quarantine "/ Applications/XXX.app" xattr 会删除下载时自动打上的隔离标记,Gatekeeper 将不再校验该文件。 后仍报警 .app 内部还有脚本/二进制被隔离 xattr -r -d com.apple.quarantine MyApp.app 递归删除 M 系列 Mac 启动闪退 App 仅编译 x86-64 对不常用但必须保留的无签名工具,可用 xattr 精确放行,而非关闭全球策略。 7 速查命令表 场景 命令 单个 App 解除隔离 xattr -d com.apple.quarantine "/路径/XXX.app" 递归解除隔离 xattr -r -d com.apple.quarantine
/dev/sdb1 /data1 ext4 noatime,acl,user_xattr 1 2 /dev/sdc1 /data2 ext4 noatime,acl,user_xattr 1 2 /dev/sdd1 /data3 ext4 noatime,acl,user_xattr 1 2 /dev/sde1 /data4 ext4 noatime,acl ,user_xattr 1 2 /dev/sdf1 /data5 ext4 noatime,acl,user_xattr 1 2 ,user_xattr 1 2 /dev/sdl1 /data10 ext4 noatime,acl,user_xattr 1 2
osdop_delete 删除对象操作 osdop_mapext 映射范围操作 osdop_sparse_read 稀少读操作 osdop_clonerange 克隆范围操作 osdop_getxattr 获取xattr 操作 osdop_setxattr 设置xattr操作 osdop_cmpxattr 比较xattr操作 osdop_rmxattr 移除xattr操作 osdop_resetxattrs 重置 xattr操作 osdop_tmap_up tmap更新操作 osdop_tmap_put tmap推送操作 osdop_tmap_get tmap获取操作 osdop_call 调用执行操作
绕过公证 打开终端,输入以下命令: sudo xattr -rd com.apple.quarantine /Applications/xxxxxx.app 将上面的 xxxxxx.app 换成你的App 名称,比如 Sketch.app sudo xattr -rd com.apple.quarantine /Applications/Sketch.app 或者复制以下命令粘贴到终端后 sudo xattr existing signature /文件位置 : resource fork,Finder information,or similar detritus not allowed 先在终端执行: xattr
保存重启即可~ 注意事项 如果是最新的macOS 10.15及以上, 开启了允许任何来源,有些软件还是会报损坏, 这时候则需要进行以下操作: 以这种特权的命令去授予某个应用允许运行 # sudo xattr -r -d com.apple.quarantine sudo xattr -r -d com.apple.quarantine 应用路径 # 比如我装M1版本的语雀 sudo xattr -rd
9 10 2014 Stickies.app/ drwxr-xr-x@ 3 weishu admin 102 3 26 2015 Sublime Text.app/ 可以借助命令行工具xattr 进行操作;具体使用可以man xattr. reduce(lambda x, y: x + y, lazy_pinyin(app_name, errors='ignore')) 添加拼音信息 拼音信息被添加到文件的拓展信息里面,直接使用xattr data(comments) to the app, which can help Alfred or SpotLight find it''' subprocess.check_call('xattr