MoreRSS

site iconCoco413修改

一枚爱瞎折腾的极客,主要关注安全领域。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Coco413的 RSS 预览

安全会议PDF读后随笔

2024-02-14 09:52:00

0x01 前言

    年底整理资料,发现很多收藏的文档都没有打开看过,虽然过去蛮久了,但我觉得还是值得一读,一方面整理过滤出自己关注的内容,另一方面给自己的收藏做一个交代。说起读材料还是挺喜欢做的一件事,小时候会去读字典,那时候每一页会有一个故事,就这样不知不觉也顺带把字典看了一遍;乌云挂了之后,也想把漏洞读一遍,就像乌云疯狗所说:“阅尽天下漏洞,心中自然无码”,每个事件型的漏洞都代表了一个场景、一个姿势,以及下面的评论也都蛮有意思,只可惜时间线拉的有点长,最终并没有坚持下来,看了几个类型漏洞后就结束了。因此这次读PDF一来趁热情高涨,速战速决,二来形成一个流程化,尽可能可持续,同时也把过程中比较有意思的tricks记录下。
    梳理了大约100G左右材料,还剩23G大杂烩过程中再慢慢整理了,这次精力主要在安全会议上,虽然说是读,但最多只牵强算是泛读,感兴趣的多看一会,可能用到的标记下,不感兴趣的直接略过。

    关于自动化流程,除了常规TODO外,很推荐DEVONthink 3工具,做本地文档检索、监控、管理都非常适合,比如你关注某个领域,那么构造好关键词,即可实现本地持续监控,一劳永逸。

0x02 内容篇

  • Tricks1:那些当年号称下一代的技术,现如今回头来看,貌似也并没有成为主流
  • Tricks2:当年一些明星产品&厂商,如摩拜单车、安全狗,随着收购的收购、落寞的落寞,也都慢慢退出了舞台
  • Tricks3:还想追忆下似水年华,可惜人人网找回密码的功能都不再提供了
  • Tricks4:乍一看以为水文,实则小丑是我自己,原来是flashsky早期创业的公司
  • Tricks5:嗯...不会讲故事的小编不是好黑客
  • Tricks6:熟悉的ID,忍不住还是笑出了声..
  • Tricks7:14天入门秘籍,查收一下..
  • Tricks8:说的好!
  • Tricks9:说的也好!
  • Tricks10:是这个道理!
  • Tricks11:JDSRC早期就已经把漏洞提炼成案例、经验,值得学习!
  • Tricks12:hack和dota还是挺像的,对于普通选手,把基础补刀发挥到极致就可以做到守正,至于出奇交给天分和运气吧!
  • Tricks13:赞同!hack是一种思维方式,是寻找极端、可能性、根据反馈不断Fuzz的思维方式,不仅仅是技术..
  • Tricks14:倍感熟悉的cloudeye,发现域名也都过了保护期
  • Tricks15:日本人写材料,配图还是很有民族特色的..
  • Tricks16:有意思的介绍
  • Tricks17:结合业务挖洞&总结业务场景可能的漏洞,是高效挖洞的一条捷径
  • Tricks18:工具溯源的本质我认为是检索能力,但大多产品,只是提供了检索方式,却忽略了检索内容的运营或直接把内容交给使用者自由发挥
  • Tricks19:学术派的文档风格普遍都挺简约&严谨
  • Tricks20:优秀的前辈大多都很善于总结,归纳出问题的本质,值得学习!
  • Tricks21:配图还是挺影响阅读兴趣的..

0x03 熟人篇

  • 看到不少圈内明星选手的分享,对大佬们的能力、涉及面有了全新的认识,如Kevin2600
  • 看到自己之前参加过的会议,虽过去多年,但议题内容、PPT风格还是能触起当时的回忆
  • 看到一些虽未曾蒙面,但ID很熟悉的分享者,可惜Goolge他们近一年的记录,大多都已不再活跃
  • 有过一面之缘,一起吃过饭、聊过技术的Imperva小伙伴,才知道原来很早就已叱咤风云了
  • 一直关注着的一个圈内大牛,当年分享还是代表天融信,而后代表360,最后去了奇安信,虽未曾认识,但此刻还是多了一份熟悉感
  • 看到不少神交多年的好友,大多已成家立业,时常朋友圈晒娃分享心得
  • 有的还是之前的同事,在认识他的时候,研究的领域和当年分享的内容截然不同,不禁感叹他技术涉猎面真广,也有一些分享者代表现在公司的小伙伴,有的已离职不知去处,有的还在公司,荣幸与其同行

0x04 最后总结

在浏览及梳理了近几十个G会议材料后,最直接有这几个感受:

  1. 安全圈分享明显变少了,或者说只在小圈子活跃了,也或者是自己关注的精力变弱了。
  2. Anything can be study!能够参加大会的材料,理论都有值得学习的地方,就算议题不关注或质量一般,也可以从PPT风格、组织逻辑、配图素材、标题命名、Slogen点睛等上找到启发点。
  3. 对ATT&CK价值有了更深的认识,无论研究漏洞、记录hacktricks、总结渗透经验,本质都是在构建自己的攻击框架,技术研究肯定会滞后,但技战术覆盖要点的归纳,是可以一通百通、长期受益的,也是查漏补缺复盘的一种很好方式。
  4. 技术可能会过时,但攻击思路&理念不会过时,上一次这么说的是k8gege,最近一次亲身感受是用CVE-2007-4559 getshell。
  5. 激情是触发器,可以拥有动力,但不一定可持续。长期作战的话,建立一个正向循环,且尽可能自动化的流程尤为重要
  6. 安全涉及面太广,做不到完美,聚焦在自己关注的分支上就好,其他的交给directory、search、automation。
  7. 和大模型一样,可能很难超越某些前辈,但在细分再细分的领域或某一类型的漏洞挖掘上做到极致,就是一枚结界师。
  8. 发现大多分享者包括我自己,更偏向对技术成果利用的描述,忽略发现过程、考虑原因、中间试错尝试等等,结合自身感受,可能是细节过多内容会臃肿、过程思考较琐碎难以文字化、有些试错只是运气、猜测并不成文等,但其实最有学习价值的就是这些过程细节,就像scz前辈所说,阅读一篇漏洞分析,要试着去思考文章背后的故事,为什么他能发现,利用链是如何被找到的,通过这个漏洞切入点是否能延伸找到更多同原理的漏洞等,尽可能对一枚漏洞发散的去理解。

MasterGo在线设计工具

2023-11-26 18:14:00

0x01 前言

最近接触到MasterGo这款在线设计工具,发现挺不错的。一方面类似Sketch,学习成本比较低,另一方面资源比较多,组件套用、协同配合上也比较方便,因此学习一番,便于更高效运用这款工具。


0x02 功能介绍

1、导入导出

  • 支持对Axure/Sketch等源文件导入
  • 支持将所有图层导出在一个PDF、一张图片或打包zip在一个目录方式导出
  • 支持导出Sketch格式本地存档

2、协同沟通

  • 通过点击他人头像,可以跟随协作组视角
  • 通过使用评论、校对、圈画的方式可以在线对设计调整/注意内容进行沟通,并可以@相关人员
  • 通过右上角分享功能,配置访问权限后,便于设计图实时查看

3、历史版本

  • 可以对历史版本进行恢复或创建副本
  • 默认自动30s保存历史版本,可以手工添加历史版本做标记

4、自动布局

  • 自适应元素布局,例如输入框和文字自适应,输入内容长短自动调节,避免来回调整

5、组件样式

  • 通过建立组件,高效使用重复元素;子组件即实例,是母组件的副本,继承母组件元素和结构,子组件修改样式不会影响母组件,但此时母组件样式将不同,如果需要被同步点击重置所有改动
  • 通过点击编辑组件按钮快速定位母组件
  • 组件适合布局复用,组件集适合在不同条件下布局选择复用
  • 创建组件,在名称中用/分隔,实现分层管理。

0x03 操作技巧

1、管理资源文件

参考团队资产管理方式,团队项目可以按照业务产线区分,文件可以按照功能模块或产品版本号分组,便于内容直观查看与管理。同时可以对每个文件设置封面,以及对文件内容以层级树方式管理版本,便于内容查看与方案复用。

2、汇总组件模板库

  • 统一设计规范,如颜色、特效、文字、布局、图标、组件等风格
  • 常用高频组件或样式,如威胁等级/高危色、详情页字体
  • 常用demo复制数据,如漏洞类型、漏洞详情
  • 常见场景设计模板/思路,如扫描任务、分析图表

3、常用快捷键


四、参考链接

MasterGo资源社区
MasterGo帮助中心

ELK单机调优方案

2022-08-25 19:46:00

0x01 背景前言

最近分析一批恶意样本数据,考虑到数据量以及开箱即用的图表分析,所以决定把数据放在ES上,用Kibana来分析。因为是自己在用,所以只要能快速跑起来,撑的住小几T数据的秒级查询、分析即可。综合速度、便捷性等方面,工作流大致如下:写streaming_bulk,存es、分词ik_max_word、检索kibana、迁移elasticdump/logstash。这个过程没啥高深技术卷入其中,更多只是从众多功能项中,筛选出满足需求,适合单机快速运转的小方案,记上一笔,方便日后用到节省时间。


0x02 环境篇

⚠️ 由于软硬件选用、性能调优出发点是个人单机,线上环境可能并不适合。

1、环境部署

基本环境部署没什么好说的,跟着网上步骤走一遍即可,软件用的是ELK 7.10.1,主环境安装在windows上,同时为了方便调试本地也拉了个docker测试环境;硬件上4核CPU(性能高建议8核~16核)、HDD+SSD、24G内存(性能高建议64G)。推荐两个部署源:

https://github.com/deviantony/docker-elk
https://mirrors.huaweicloud.com/elasticsearch/

2、性能调优

  • JVM优化

根据官方给出的建议,JVM配置为机器一半的内存,不超过32G,且Xms和Xmx值尽可能保持一致。

config/jvm.options
-Xms12g
-Xmx12g
  • 系统优化(Linux)
# 关闭交换分区,防止内存置换降低性能。 将/etc/fstab 文件中包含swap的行注释掉
sed -i '/swap/s/^/#/' /etc/fstab
swapoff -a

# 单用户可以打开的最大文件数量,可以设置为官方推荐的65536或更大些
echo "* - nofile 655360" >> /etc/security/limits.conf

# 单用户线程数调大
echo "* - nproc 131072" >> /etc/security/limits.conf

# 单进程可以使用的最大map内存区域数量
echo "vm.max_map_count = 655360" >> /etc/sysctl.conf

# 修改立即生效
sysctl -p
  • 索引优化

    • 分片副本:自己用单节点分片建议3个以内,每个分片30GB左右,1个副本,具体根据实际使用调节,目前保持 Elasticsearch7.0 的默认1个分片、1个副本。
    • 数据结构:避免使用动态生成的Mapping,手动构造Mapping。
    • 减少字段:对于较多不需要检索的字段,建议用MySQL等其他数据库组合的方式做联合存储。
  • 写入优化

Elasticsearch近实时的本质是:最快1s写入的数据可以被查询到。 如果refresh_interval设置为1s,势必会产生大量的segment,检索性能会受到影响。 所以非实时的场景可以调大,设置为30s,甚至-1。即:在写入过程中修改刷新时间和副本数来提升写入的速度,等到写入结束后再修改回去。

GET /ASM_Assets/_settings


PUT /ASM_Assets/_settings
{
    "index" : {
        "refresh_interval" : "-1",
        "number_of_replicas": 0
    }
}

同时用buk或streaming_bulk批量写的方式,目前主要用的streaming_bulk基本能够达到数据录入的时间、文档的要求。根据不同场景、侧重需求情况,可以参考py-elasticsearch的stream_bulk、parallel_bulk、bulk性能对比作者给出的测试结果选择适合的批量写入的方式。


0x03 操作篇

1、常用REST API

  • 创建索引
PUT index_two
{
    "mappings":
    {
        "properties":
        {
            "name":
            {
                "type": "keyword"
            }
        }
    },
    "settings":
    {
        "index":
        {
            "number_of_shards": 1,
            "number_of_replicas": 2
        }
    }
}
  • 删除索引
# 删除索引数据,保留结构
POST index_one/_delete_by_query
{
  "query": { 
    "match_all": {
    }
  }
}

# 删除索引
DELETE /index_one,index_two
  • 查看索引
# 查看A开头索引
GET /_cat/indices/A*?v

# 查看索引状态
GET  /_cat/indices/ASM_ips

# 查看索引设置
GET /ASM_ips/_settings

# 查看索引mapping
GET /ASM_ips/_mapping

2、常用检索语法

  • KQL
# 查询response字段中包含200的文档对象
response:200

# 模糊查询response字段中包含200的文档对象
response:*200或者response:200*

# 不区分大小精确查询某字符串
message:"hello world yes"

# 不区分大小无序查询包含其中某个字符串
message:hello world

# 关系查询
(name:jane and addr:beijing) or job:teacher
response:(200 or 404)
not response:200
response:(200 and not yes)
@timestamp < "2021"

# 查询所有包含response字段的文档对象。
response:*

# 查询搜索列machine开头,字段内容包含hello的数据记录
machine*:hello
  • Lucene
# 返回结果中需要有http_host字段
_exists_:http_host 

# 不能含有http_host字段   
_missing_:http_host   

# 通配符模糊匹配
kiba?a, el*search

# 范围匹配
sip:["172.24.20.110" TO "172.24.20.140"]
date:{"now-6h" TO "now"}

3、数据迁移导入/导出

  • 数据批量录入(elasticsearch-py)
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# @Author   : Coco413
# @Summary  : Batch import source data to elasticsearch
# @Usage    : python3 import_es.py

try:
    import simplejson as json
except ImportError:
    import json
from elasticsearch import Elasticsearch, helpers
from datetime import datetime
import csv

ES = Elasticsearch(
    hosts=[{"host": "127.0.0.1", "port": "9200"}],
    http_auth=("xxx", "xxxx"),
    retry_on_timeout=True,
    max_retries=10)

def importdata_TXT(filename="ips.txt", index_name="xxx", count=0, all="N/A"):
    with open(filename, "r", encoding="utf8") as fr:
        for line in fr:
            count += 1
            pass # <根据自身需求,处理文本结构至base>
            temp = {
                "_op_type": 'index',
                "_index": index_name,
                "_source": base
            }
            print("[{}/{}]{}".format(count, all, temp))
            yield temp

def importdata_CSV(filename="domains.csv", index_name="xxx", count=0, all="215612"):
    with open(filename, "r", encoding="utf8") as fr:
        for row in csv.DictReader(fr):
            count+=1
            pass # <根据自身需求,处理文本结构至base>
            temp = {
                "_op_type": 'index',
                "_index": index_name,
                "_source": base
            }
            print("[{}/{}]{}".format(count, all, temp))
            yield temp

def importdata_JSON(filename="ioc.json", index_name="xxx", count=0, all="N/A"):
    with open(filename, "r", encoding='utf-8') as fr:
        for line in fp:
            count+=1
            pass # <根据自身需求,处理文本结构至base>
            temp = {
                "_op_type": 'index',
                "_index": index_name,
                "_source": base
            }
            print("[{}/{}]{}".format(count, all, temp))
            yield temp

for ok, response in helpers.streaming_bulk(client=ES, max_retries=5, chunk_size=5000, actions=importdata_TXT()):
    if not ok:
        print(response)
  • 少量数据导出(elasticdump)
elasticdump --input=http://xxx:[email protected]:9200/ASM_Assets --output=./my_index_mapping.json --type=mapping

elasticdump --input=http://xxx:[email protected]:9200/ASM_Assets --output=./my_index_data.json --timeout=10 --sizeFile=1gb --type=data

elasticdump --input=http://xxx:[email protected]:9200/ASM_Assets --output=$ | gzip > ./my_index_data.json.gz --timeout=10 --type=data

elasticdump --input=./my_index_data.json.gz --output=http://xxx:[email protected]:9200/ASM_Assets --type=data
  • 大量数据导出(logstash)
input {
    elasticsearch {
        hosts => ["127.0.0.1:9200"]
        user => "xxxx"
        password => "xxx"
        index => "*"
        # query => '{ "query": { "query_string": { "query": "*" } } }'
        docinfo => true
        size => 5000
        # schedule => "0 * * * *"
    }
}
output {
    file {
        path => "./1.json"
        # path => "./test-%{+YYYY-MM-dd HH:mm:ss}.txt"
    }
    stdout {
        codec => json_lines #console输出, 可以注释stdout部分
    }
}

0x04 参考引用

ES优化-精华总结 | 智能后端和架构

Elastic Stack 实战手册-藏经阁-阿里云开发者社区

阿里云Elasticsearch 最佳实践 - Alibaba Cloud

如何设计 mapping - Elastic 中文社区

Mapping | Elasticsearch Guide 7.10

我的知识管理方式

2022-05-22 23:43:00

0x01 前言

在这个信息过载的时代,我既是一名知识汲取的受益者,同时也是知识反噬的焦虑者。作为一名信息安全从业者,需要具有大量的阅读和碎片知识的积累,来帮助自己完善知识体系、提升对安全认知的见解。在这个成长的过程中,同时也会伴随着反噬、焦虑,比如自己的精力和意志时常产生矛盾互相打架,收藏的paper、想做的 ideas 积压的越来越多,生活和技术分配的时间失去了平衡等等,导致陷入在信息洪流和知识焦虑中难以自拔。

之前有一段时间,我大部分信息来源渠道,甚至娱乐相关的APP几乎都被技术相关话题所淹没,我被自己困在了自己勾勒的信息茧房中,抛开技术仿佛就是一只小白懵懵糟糟,唯一换来的可能就是朋友的调侃只要发给我的paper,好像都被我提前看过了,而得到的那一丝丝“奇怪的自豪感”。

无休止的奔跑、野蛮的阅读、仅靠意志力和信息洪流正面刚,诚然量变会产生质变能够带来不少帮助,并且这种“野蛮”、“痛”的过程我一直也认为是很有必要的,只是在经历过后,需要能够把自己拽出来,进而更好更有效率的学习沉淀。当下不敢说摆脱了知识焦虑的困扰,自己偶尔也还是会出现焦虑,“禁闭”个一两天和自己作对下,但相比之前好了很多,同时在这个过程中也有了一些自己的感悟,拿出来和大家一起交流,共同捍卫我们的信息流。

0x02 为无休止的奔跑,按下暂停键

无休止的奔跑,会让信息积压的更多,既给自己增添焦虑感,也不利于内容吸收。因此需要阶段性的按下暂停键,回顾整理沉淀,降低知识的焦虑感。如何降低知识焦虑感?我有如下这几个小 tips 和大家分享:

1、减少Inbox收集入口,不再随意使用收藏功能

之前零碎信息管理上有个明显的问题,就是入口过多,多个信息渠道收藏、转发,甚至有时候图一时方便直接截图或粘贴备忘录,导致回顾整理起来非常耗费精力。因此开始缩减入口,减少在不同渠道平台上使用收藏功能,把过滤后的信息入口,统一都放入在 Cubox 进行回顾。

2、减少交叉信息的获取,不因错过文章而焦虑

之前会有因为担心“单节点故障”漏掉了某些信息内容,所以在不同信息渠道上交叉重复订阅相同的信息源,导致阅读时候产生不少重复的内容。但其实这样意义并不大,更多只是增重了重复过滤的精力,并且有了这种“冗余机制”,在浏览的时候也会不自觉产生出一定惰性和依赖性,阅读也不够有耐心。

所以重复交叉订阅没有太多必要,就像个人知识管理体系系列 - 捕蛇者说里所说:

当第一次遇到一篇文章的时候可以不用打开,当第二次又出现在你眼前的时候再去阅读,真正重要的东西是会出现第二遍的。

乍一听鸡汤味十足,但细细想来还是挺有道理,即使信息源只保留一个,重要的内容比如某个漏洞爆发还是自然而然可以通过朋友圈、工作群等方式获取到,及时性固然重要,但重复筛选所耗费的精力也应当被呵护。因此我逐渐清理了一些没必要的群、公共号以及其他重复信息源,仅保留方便日常和较为关注的信息源做交叉订阅,把生活和技术的信息界限感划分的更清晰些,既不影响信息获取,同时也释放了一定精力跳出来,回归到生活。

3、精力有限,唯有聚焦胜于一切

之前有段时间,总想着把积压的内容一个个 check 掉,但却不断陷入在收藏-消化、再收藏-再消化的恶性循环中,归根到源头还是不够聚焦、导致信息过滤失败,处理太多“有益但无意义”的信息流,分散了精力。所以在过滤信息的时候应当更加谨慎一些,评估自己是否能够做到稍后阅读,从而适当舍弃掉一些信息流,聚焦在自己的分支上,避免被大量都是有益的信息所干扰到。比如收藏某篇文章的时候,可以问问自己是因为确实需要还是惯性收藏?最近是否有时间去研究?是否能解决当下某个问题?如果不收藏今后找不到吗?等等问题,然后给自己一个过滤信息的答案。

4、放平心态,接纳焦虑

如何放平心态,去看待知识焦虑,我的理解就是把它当做一个件在正常不过的事情,因为这种焦虑不仅仅我们会产生,很多其他人也都有遇到过,它只是这个信息时代的一个现象,而非问题,因此只要放平心态去接纳这种现象,找到适合自己的工作流就好,当工作学习的时候就进入这个框架好好工作,非工作的时候跳就出来好好享受生活。这里摘录了几条大佬们的语录:

  • Project ZeroGoogle P0安全团队 - Blog

    • The More You Know, The More You Know You Don’t Know
  • ringzero猪猪侠ringzero的个人主页 - 微博

    • 在这样一个信息爆炸的互联网时代,唯一不缺的是信息和内容,非常奇缺的是能够筛选掉无效信息的东西。
    • 获取知识与应用知识的街接点在思考。搜索引擎可以提供海量资源,令知识获取变得比以往任何时候都容易,却几乎没办法帮助大家真正学会如何思考并且应用这些知识。
    • 我理解的世界是一个由「信息」维系的世界,人的知识结构、世界观、经验等均由不同信息组成。人与人的差别在于掌握「信息的多少及信息质量的高低」。当你能够自由便捷地获取信息,你就拥有更多改变的机会,让自己快速成长。
  • 不爱吃鱼的蓝鲸也许生活本该碎片化:聊聊 flomo 这款工具如何改变我的生活 - 少数派

    • 从每天清晨开始,我们就与来自未来的新讯息邂逅了。在手机上接收天南海北的信息,在电脑前搜集包罗万象的新意。可能是一篇文章,一条新闻,一封邮件。这些碎片随着信息的浪潮蜂拥而至,有用或是无用,构建起了我们的生活片段。不论是学习还是工作,一切都在慢慢推进,但并不始终都来的整齐划一。生活,或许本就是碎片化的。有时我们应该换位思考,接收这种碎片化,才能更好地关注信息的价值。
    • 规整,在当时的我看来,才是信息的本体。只有让它们整齐划一地出现在我的记录中,我才会觉得安心。

通过这些语录不难看出,大家都面临过相类似的困扰,也都在不断探索寻找适合自己的信息相处方式,所以对于知识焦虑,要能从心态上平静的接纳这一现象。

0x03 优化适合自己的工作流

知识管理工作流简单来说即:从信息输入到输出的过程中,挑选顺手的工具连贯而形成一套信息管理使用流程。知识管理这类工具有很多,比如Flomo、Zotero、Obsidian、Notion等都是很好的工具,是否适合自己,需要在尝试过程中发现问题解决问题。以下是我在这个过程中挑选的一些工具,并形成适合我自己的简易工作流。流程、工具选用因人而异,仅供参考:

1、输入篇

RSS信息聚合

在RSS订阅工具上我主要使用Inoreader,在订阅一些国外Feed上速度能够更快一些,不过由于 RSS 会存在一定信息延迟,所以部分源会配合上 Distill 添加页面监控提醒。在RSS内容筛选管理上我大致有如下这几个小习惯:

  • 定期融合行业内优质订阅源

关注行业内一些综合订阅源更新动态,定期去重、合并、筛检做融合补充。目前主要关注zhengjim/Chinese-Security-RSSr0eXpeR/Security_RSSHan0nly/SecurityRSSzer0yu/CyberSecurityRSS这几个仓库,如果也有类似需求的小伙伴,在处理opml文件时,注意这几个小tips:(1)同订阅源,不同协议,例如http://www.example.com/rss.xmlhttps://www.example.com/rss.xml(2)同订阅源,URL路径格式,例如http://www.example.com/rss.xmlhttp://www.example.com/rss.xml/ (3)同订阅源,多订阅地址,例如http://www.example.com/rss.xmlhttp://api.example.com/rss.xml (4)同订阅源,不同烧制方式,例如同一个站点可能会出现有的用Feed43、有的用RssHub烧制。

  • 分拣独立出高质量订阅源

比较关注的、高质量订阅源独立在一个目录,便于忙的时候优先取舍浏览。

  • 分拣独立出每天更新较多及聚合后的订阅源

一些每天更新频繁的比如 HackerNews、Freebuf 或者本身就是聚合的站点比如unsafe、doonsec等独立出来,避免积压过多,影响其他源信息查看。

Github开源项目

Github是我比较高频的信息获取渠道,由于之前顺手 Fork 积压了不少仓库,管理起来比较麻烦,并且事后也基本都没有再看过、查找也不方便,所以 GitHub 更多只是用来项目浏览和仓库更新提醒,不做收藏。遇到感兴趣的项目打标签放到 Cubox 或者直接整理到 DEVONthink Awesome-Security,方便需要的时候能快速找到某个项目或某类项目集。

草稿灵感记录

对于闪现灵感、草稿随笔这类只言片语主要用备忘录、Procreate。备忘录记录会比较随意,放飞的写写画画,然后定期再去清理。

文档书籍阅读

在文档阅读流程上,我主要采用 iCloud云盘 + DEVONthink方式,需要看哪些文件通过 iCloud 云盘同步,看完后再归档到本地目录,替换新的文件到云盘。交替同步一方面不会有太多的阅读压力,另一方面也避免大量文件同步耗时、占用空间。

在文档阅读设备上,习惯用iPad看文档,周末打着dota,嚼着脆司令,再来口冰阔乐,读秒时刷刷PDF,一大乐事。

在技术类文档管理上,习惯重标签轻分类,即所有的文档都放在一个目录下,通过命名方式 + 标签进行管理,同时用标签自带的颜色区分属性大类,如红队、蓝队。

2、中转篇

稍后阅读Cubox

信息筛选过滤后,交由 Cubox 标记分类,作为统一的信息中转入口,承载稍后阅读和整理归档的中抠作用。

内容编辑Typora

由于 DEVONthink 自带的编辑器不好用,所以内容编辑使用 Typora 或者飞书在线文档代替。

3、输出篇

输出SecNavi

SecNavi是我一个在持续更新的安全站点导航,主要是为了简化一部分浏览器书签、方便平时资料查找,发现不错的网站就补充添加进去。

输出DEVONthink

DEVONthink总的来说是一款 ALL-IN-ONE 的信息管理工具,既可以 RSS 订阅、稍后阅读,也可以文件管理、全文检索等,同时也有比较方便的同步方案,基本贯穿了输入到输出整个工作流。

从内心来说我是希望有这么一款全方位覆盖工作流 ALL-IN-ONE 的工具,但深入使用下来并不适合我,在细节、方便程度、功能覆盖上等都不够顺畅。不过DEVONthink在文件管理上非常方便,并且其标签能够和 Finder 系统标签完全同步保持一致,因此我使用 DEVONthink 主要是用于管理输出的笔记、文档等,同步Finder&iCloud归档备份。

4、番外篇

TODO日程助手

工作流除了对输入&输出管理外,日程安排也尤为重要,目前我主要使用 Things 3 来管理工作流任务、生活琐事、重要提醒等。

PDA数字助手

工作流除了软件外,硬件设备也必不可少,我日常主力MBP,闲暇外出iPad,配合飞书的在线文档 + iCloud云盘,能够方便流畅的内容编辑&文档阅读。

0x04 结语

适合的工作流、良好的心态,能够帮助我们更从容的面对,每天扑面而来的信息流。除此之外,还应当不断提升独立思考、信息检索的能力,反哺工作流的输入与输出,进而去完善知识体系,让自己对事物的认知理解能更趋势于准确且全面。

以上就是我的知识管理方式,希望能给你带来一些帮助。

0x05 参考文献

个人知识管理体系系列 - 捕蛇者说

如何学习这么多的安全文章(理论篇) - aerfa21

有用和无用 - tombkeeper

我的效率系统三原则 - 少数派

不要追求完美的自己 - 少数派

与信息舒适共处:我的信息极简管理实践 - 少数派

也许生活本该碎片化:聊聊 flomo 这款工具如何改变我的生活 - 少数派

东西我都装好了 | 「古方」新用:用「5S」法则重塑你的收纳整理逻辑 - 少数派

让安全产品摆烂的十五条建议

2022-03-06 18:28:00

看到一篇笔风挺意思的文章让安全团队快速倒闭的十条建议,模仿也写了几条关于安全产品的忠告建议,行之是否有效,也请自行甄别尝试,过程所产生的一切风险责任由践行者承担~~

1、不必重视安全产品运营,交由客户自由发挥
2、不必量化指标自证产品能力,看不见的价值无需呈现
3、无需在意产品使用“安全感”,尽管强迫用户适应你的想法
4、不必方法论定战略做规划,直接一把搜就开干
5、无需明确产品定位,尽量发散尽善尽美
6、不必深入了解安全,对着标书抄抄改改即可
7、不必落地解决方案、场景流程,只要功能具备,其他依赖使用者水平就好
8、不必提高核心竞争力,产品同质化是常态
9、不必倾听一线声音,他们使用很流畅
10、不必客观展示全貌数据,片面断节数据不影响分析
11、不必透明指标定义、研判机制,懂的人自然懂
12、功能流程不必闭环,细节交互逻辑无需在意
13、尽管把故障运维压力交由研发,不必为其考虑自动化
14、不必管控产品演示质量,无需考虑演示标准化
15、不必考虑安全产品质量,安全产品自然安全

对安全网闸产品初探

2022-01-18 20:26:00

0x01 什么是安全网闸?

安全网闸(SGAP)全称安全隔离网闸,又称“安全隔离与信息交换”,是一种由带有多种控制功能专用硬件在电路上切断网络之间的链路层连接,用以实现不同安全级别网络之间的安全隔离,并提供可管可控的数据交换软硬件系统,从而抵御各种已知和未知的攻击,提高内网的安全强度。

网闸最早出现在美国、以色列等国军方,它相当于一个高速开关在内外网之间来回切换,同一时刻内外网间没有连接,处于物理隔离状态,在隔离内外网业务连接的前提下,实现安全的数据交换。
网闸通常使用 “2+1” 架构,即内网处理单元、外网处理单元和DTP物理隔离通道,确保内外网之间没有TCP/IP连接,通过协议剥离、信息摆渡、安全检查、病毒扫描等方式确保内外网在隔离的情况下进行信息交互。


0x02 实现原理及运作流程

1、发展历程

  • 多套网络技术

    • 早期没有合适的设备可用,一些组织通过建立两套完全独立的网络来实现隔离,一套可对外连接,一套完全封闭于内部,两套网络互不相连。两套系统间无法做到信息共享,只能借助于人工或各自部署于两套网络中的独立的计算机来分别获取内部和外部信息。这种方式安全性较高,但两个网络间信息交换困难。
  • 隔离卡技术

    • 随后出现的隔离卡技术避免了使用多套计算机系统而带来的资源浪费和操作不便。它借助隔离卡对两个网络控制器分别供电,并将一台设备上的硬盘物理分割为两个分区,分别与内外网络相连。在不同的硬盘上各自安装独立的操作系统,形成两个完全独立的环境。操作者每次只能进入其中一个系统,要进行系统切换时,必须关机重启。采用单机隔离卡技术,解决了单机非实时信息交换的需求,但网间连续实时的业务依然无法开展,且对单机通信的信息泄漏问题没有有效的监控手段。
  • 传统网闸技术

    • 在安全隔离方面也曾出现过其它多种技术方案,比如在隔离卡建立起的两套系统间设立数据缓冲区,进行分时连接和切换,还有就是基于电子开关的方式进行隔离系统两端网络通断的控制。传统网闸技术在一定程度上能够解决信息交换和隔离的需求,但在安全功能实现和系统性能上仍不能完全满足安全建设的要求。

      2、工作原理

      SGAP技术的基本原理:首先切断网络之间的TCP/IP等通用协议连接,将数据包进行分解或重组为静态数据,然后对静态数据进行安全审查,包括网络协议检查、代码扫描等,确认后的安全数据流入内部单元,内部用户通过身份认证机制获取所需数据。

      3、单元模块

      安全网闸在功能上基本包含:安全隔离、内核防护、协议转换、病毒查杀、访问控制、安全审计、身份认证等。
      SGAP在系统单元上一般由三部分构成:内网处理单元、外网处理单元和专用隔离硬件交换单元。三个单元都要求其软件的操作系统是安全的,也就是采用非通用的操作系统,或改造后的专用操作系统。一般为Unix BSD或Linux的变种版本,或者其他是嵌入式操作系统VxWorks等,但都要对底层不需要的协议、服务删除,使用的协议优化改造,增加安全特性,同时提高效率。
      系统中的内网处理单元连接内部网,外网处理单元连接外部网,两模块间没有直接的物理连接,形成物理隔断,从而保证可信网和非可信网之间没有数据包的交换,没有网络连接的建立。专用隔离硬件交换单元在任一时刻点仅连接内网处理单元或外网处理单元,与两者间的连接受硬件电路控制高速切换,其交换单元的这种交换并不是数据包的转发,而是应用层数据的静态读写操作,因此可信网的用户可以通过安全隔离与信息交换系统放心的访问非可信网的资源,而不必担心可信网的安全受到影响。单元模块具体负责处理的内容如下:

  • 内网处理单元
    包括内网接口单元与内网数据缓冲区。接口部分负责与内网的连接,并终止内网用户的网络连接,对数据进行病毒检测、防火墙、入侵防护等安全检测后剥离出“纯数据”,作好交换的准备,也完成来自内网对用户身份的确认,确保数据的安全通道;数据缓冲区是存放并调度剥离后的数据,负责与隔离交换单元的数据交换。
  • 外网处理单元
    与内网处理单元功能相同,但处理的是外网连接。
  • 隔离与交换控制单元
    是网闸隔离控制的摆渡控制,控制交换通道的开启与关闭。控制单元中包含一个数据交换区,就是数据交换中的摆渡船。对交换通道的控制的方式目前有两种技术,摆渡开关与通道控制。摆渡开关是电子倒换开关,让数据交换区与内外网在任意时刻的不同时连接,形成空间间隔GAP,实现物理隔离。通道方式是在内外网之间改变通讯模式,中断了内外网的直接连接,采用私密的通讯手段形成内外网的物理隔离。该单元中有一个数据交换区,作为交换数据的中转。
    这种独特设计保证了专用隔离硬件交换单元在任一时刻仅连通内部网或者外部网,既满足了内部网与外部网网络物理隔离的要求,又能实现数据的动态交换。同时SGAP软件系统会内置一些协议分析引擎、安全检测、病毒查杀等多种安全检测机制,根据用户需求配置不同的安全策略等。

    4、运作流程

    信息通过网闸传递需经过多个安全模块的检查,以验证被交换信息的合法性。当访问请求到达内外网主机模块时,首先由网闸实现 TCP 连接的终结,确保 TCP/IP 协议不会直接或通过代理方式穿透网闸;然后内外网主机模块会依据安全策略对访问请求进行预处理,判断是否符合访问控制策略,并依据 RFC 或定制策略对数据包进行应用层协议检查和内容过滤,检验其有效载荷的合法性和安全性。一旦数据包通过了安全检查,内外网主机模块会对数据包进行格式化,将每个合法数据包的传输信息和传输数据分别转换成专有格式数据,存放在缓冲区等待被隔离交换模块处理。这种“静态”的数据形态不可执行,不依赖于任何通用协议,只能被网闸的内部处理机制识别及处理,因此可避免遭受利用各种已知或未知网络层漏洞的威胁。
    隔离交换单元模块采用固化控制逻辑,与内外网模块间只存在内存缓冲区的读写操作,没有任何网络协议和数据包的转发。隔离交换子系统采用互斥机制,在读写一端主机模块的数据前先中止对另一端的操作,确保隔离交换系统不会同时对内外网主机模块的数据进行处理,以保证在任意时刻可信网与非可信网间不存在链路层通路,实现网络的安全隔离。 当内外网主机模块通过隔离交换模块接收到来自另一端的格式化数据,可根据本端的安全策略进行进一步的应用层安全检查。经检验合格,则进行逆向转换,将格式化数据转换成符合 RFC 标准的 TCP/IP 数据包,将数据包发送到目的计算机,完成数据的安全交换。

5、部署架构

安全隔离网闸通常布置在两个安全级别不同的两个网络之间,如信任网络和非信任网络,管理员可以从信任网络一方对安全隔离网闸进行管理。


0x03 需求场景及痛点解决

1、业务痛点

  • 实现隔离不难,难在隔离后的数据交换,因此需要一套解决方案来实现既要物理隔离来保护数据安全,又可以兼顾数据交换,同时又不像隔离卡那样复杂麻烦。

    • 当用户的网络需要保证高强度的安全,同时又与其它不信任网络进行信息交换的情况下,如果采用物理隔离卡,用户必须使用开关在内外网之间来回切换,不仅管理起来非常麻烦,使用起来也非常不方便,如果采用防火墙,由于防火墙自身的安全很难保证,所以防火墙也无法防止内部信息泄漏和外部病毒、黑客程序的渗入,安全性无法保证。在这种情况下,安全隔离网闸能够同时满足这两个要求,弥补了物理隔离卡和防火墙的不足之处。
  • 传统的U盘、FTP来实现数据交换既不方便,也缺少过程审计,在发生数据泄露时候难以溯源,需要一套解决方案来实现做到隔离数据交换可管可控。

    • 通过划分内外网或者再细分办公网、业务网等实现网络隔离不难,但这种逻辑上的网络隔离并不能确保数据资产安全,因为网络划分了还需要进行数据交换,内网的东西要发出去,外网的东西也要发进来,这时候在进行内外网数据传输安全性就很难保证,并且通过传统的FTP、U盘传输都没有审计的功能,数据泄露的时候很难进行溯源,这时候就需要有GAP,既可以审计审批来确保数据合规,也可以对内外网之间数据传输可管可控。
  • 无法确保TCP/IP协议、防火墙本身的安全,因此需要一套解决方案加强隔离程度,应对未知、APT等攻击。

    • 通常见到的木马大部分是基于TCP的,木马的客户端和服务器端需要建立连接,而安全隔离网闸由于使用了自定义的私有协议(不同于通用协议)。使得支持传统网络结构的所有协议均失效,从原理实现上就切断所有的TCP连接,包括UDP、ICMP等其他各种协议,使各种木马无法通过安全隔离网闸进行通讯,从而可以防止未知和已知的木马攻击。并且从目前的安全技术,无论防火墙、UTM等防护系统都不能保证攻击的一定阻断,入侵检测等监控系统也不能保证入侵行为完全捕获,所以最安全的方式就是物理的分开。

      2、政策标准

  • 工信部《工业控制网络安全隔离与信息交换系统安全技术要求》
  • 公安部技术规范要求,涉密网及国家重大基础设施网络必须与公网进行物理隔离,电子政务的内外网络之间需要满足“物理隔离”。
  • 最高人民法院《安全隔离与信息交换平台建设要求》FYB/T 53001—2020

    3、适用群体

    业安全网闸主要服务于电力、工业、医院、银行等一些对数据安全合规要求较高的单位。

    4、市场占比

    根据IDC 2020年发布的《中国安全隔离与信息交换市场份额,2019:各方需求驱动,市场发展长期向好》研究报告,安全网闸市场规模达到1.05亿美元,较2018年同比增长20.5%,启明和奇安信市场份额占比前列。


0x04 常见问题

1、与防火墙有什么区别?

网闸是一种隔离设备,是在保障安全的基础上实现通讯,而防火墙是保障通讯的基础上尽量做到安全。防火墙一般在进行IP包转发的同时,通过对IP包的处理,实现对TCP会话的控制,但是对应用数据的内容不进行检查。这种工作方式无法防止泄密,也无法防止病毒和黑客程序的攻击。

特性 安全网闸 防火墙
访问控制 基于物理隔离的白名单控制 基于连通网络的黑名单控制
硬件特点 多主机形成纵深防御,保证隔离效果 单主机多宿主
隔离类型 专用隔离硬件 无专用数据交换硬件
软件特点 不允许TCP会话 允许TCP会话
访问类型 不允许从外到内的访问 允许从外到内的访问
安全性特点 可以最大程度防止未知攻击 不能防止未知攻击
性能与应用特点 确保安全性能所需的管理和维护工作量小 需要7x24监控,确保安全性能
数据通过性 性能适中 高性能
隔离方式 需要与应用系统结合 对应用透明

2、与物理隔离卡的区别?

安全隔离网闸与物理隔离卡最主要的区别是安全隔离网闸能够实现两个网络间的自动的安全适度的信息交换,而物理隔离卡只能提供一台计算机在两个网之间切换,并且需要手动操作,大部分的隔离卡还要求系统重新启动以便切换硬盘。

3、交换信息与路由器、交换机在网络之间数据交换的区别?

安全隔离网闸在网路间进行的安全适度的信息交换是在网络之间不存在链路层连接的情况下进行的。安全隔离网闸直接处理网络间的应用层数据,利用存储转发的方法进行应用数据的交换,在交换的同时,对应用数据进行的各种安全检查。路由器、交换机则保持链路层畅通,在链路层之上进行IP包等网络层数据的直接转发,没有考虑网络安全和数据安全的问题。

4、与单向网闸的区别?

单向网闸在发现攻击后只会阻断外网的电路, 双向网闸在发现攻击后内外两边的电路都阻断。

5、有了防火墙和IDS,是否还需要安全隔离网闸?

防火墙是网络层边界检查工具,可以设置规则对内部网络进行安全防护,而IDS一般是对已知攻击行为进行检测,这两种产品的结合可以很好的保护用户的网络,但是从安全原理上来讲,无法对内部网络做更深入的安全防护。安全隔离网闸重点是保护内部网络,如果用户对内部网络的安全非常在意,那么防火墙和IDS再加上安全隔离网闸将会形成一个很好的防御体系。
并且即使网闸隔离效果很好,但是也不能取代防火墙,防火墙一般是基于网络层和传输层来进行访问控制。对于应用层控制不如网闸,而网闸对于应用层的控制更加细致化,更加深度化,但是对于网络层和传输层的控制则不如防火墙。防火墙的主要在作用就是安全域的划分(逻辑隔离)以及边界的访问控制而网闸则是在内外网之间进行数据的“摆渡”(物理隔离),相比之下,网闸的安全级别大于防火墙,但是处理报文的速率要低于防火墙。

6、隔离后环境之间可以交换哪些数据?

支持交换哪些数据取决于安装了哪些应用模块及配置的访问策略,例如可以安装流量网页、邮件、访问数据库等应用。

7、安全网闸是否支持千、万兆网?

大多安全隔离网闸支持百兆网络,如果要支持千、万兆网络,需要多台安全网闸做负载均衡。

8、安全网闸安全性如何,能否被突破?

安全网闸物理隔离相对来说已经比较安全了,但也会存在一些物理社工、配置策略不当等进行攻击,例如:从Fastjson绕WAF到打穿网闸用激光入侵系统——腾讯玄武实验室 BadBarcode 研究的新进展

8、安全网闸是否会接受外来请求,是否能够隔离两个网络的相同网段地址?

不会,所有的请求都是由安全网闸主动发起,不接受外来请求,不提供任何系统服务;可以隔离两个网络相同网段。