1.å¦ä½ä½¿ç¨ CC2540 å¶ä½ä¸ä¸ª iBeacon
2.透视CobaltStrike(二)——从CS到免杀框架Veil
3.逆向pyinstaller打包的源码exe软件,获取python源码(2)
å¦ä½ä½¿ç¨ CC2540 å¶ä½ä¸ä¸ª iBeacon
åå¤å·¥ä½
ä¸å° PC
IAR Embedded Workbench éæå¼åç¯å¢ï¼å¯ä»¥ç¨å¤©è¯ç¨çæ¬ã
æ¯æ èç 4.0 çæºè½ææºä¸é¨ï¼å¹¶å®è£ ä¸ååºç¨ä¹ä¸
Android Google Play Store.
iPhone App Store.
CC å¼åæ¿
CCDebugger ä¸è½½å¨
å建 iBeacon å·¥ç¨ææ¡£
å®è£ TI å®æ¹ç CCx å¼åç¯å¢
å¤å¶ C:\Texas Instruments\BLE-CCx-1.3.2\Projects\ble\SimpleBLEBroadcaster æ件夹
ç²è´´å°ï¼C:\Texas Instruments\BLE-CCx-1.3.2\Projects\ble\iBeacon
è¿è¡ IAR Embedded Workbenchï¼ç¹å» File > Open > Workspace
ä¿®æ¹æºä»£ç
simpleBLEBroadcaster.c
// GAP - Advertisement data (max size = bytes,源码 though this is
// best kept short to conserve power while advertisting)
static uint8 advertData[] =
{
// Flags; this sets the device to use limited discoverable
// mode (advertises for seconds at a time) instead of general
// discoverable mode (advertises indefinitely)
0x, // length of this data
GAP_ADTYPE_FLAGS,
GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED,
// three-byte broadcast of the data "1 2 3"
0x, // length of this data including the data type byte
GAP_ADTYPE_MANUFACTURER_SPECIFIC, // manufacturer specific advertisement data type
1,
2,
3
};
ä¿®æ¹ä¸é¢å ³é®å
UID: E2CDB5-DFFB-D2-B-D0F5AE0
Major: 1 (0x)
Minor: 1 (0x)
Measured Power: - (0xc5)
// GAP - Advertisement data (max size = bytes, though this is
// best kept short to conserve power while advertisting)
static uint8 advertData[] =
{
// byte ibeacon advertising data
// Preamble: 0x4c
// UUID: E2CDB5-DFFB-D2-B-D0F5AE0
// Major: 1 (0x)
// Minor: 1 (0x)
// Measured Power: - (0xc5)
0x1A, // length of this data including the data type byte
GAP_ADTYPE_MANUFACTURER_SPECIFIC, // manufacturer specific advertisement data type
0x4c,
0x,
0x,
0x,
0xe2,
0xc5,
0x6d,
0xb5,
0xdf,
0xfb,
0x,
0xd2,
0xb0,
0x,
0xd0,
0xf5,
0xa7,
0x,
0x,
0xe0,
0x,
0x,
0x,
0x,
0xc5
};
æ¥ä¸æ¥ä¿®æ¹å¹¿æç±»åï¼å°ä¸é¢ä»£ç
//uint8 advType = GAP_ADTYPE_ADV_NONCONN_IND;// use non-connectable advertisements
uint8 advType = GAP_ADTYPE_ADV_DISCOVER_IND; // use scannable unidirected advertisements
ä¿®æ¹ä¸º
uint8 advType = GAP_ADTYPE_ADV_NONCONN_IND; // use non-connectable advertisements
//uint8 advType = GAP_ADTYPE_ADV_DISCOVER_IND; // use scannable unidirected advertisements
æ¥ä¸æ¥ä¿®æ¹ GAP
// Set the GAP Role Parameters
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );
GAPRole_SetParameter( GAPROLE_ADVERT_OFF_TIME, sizeof( uint ), &gapRole_AdvertOffTime );
GAPRole_SetParameter( GAPROLE_SCAN_RSP_DATA, sizeof ( scanRspData ), scanRspData );
GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData );
GAPRole_SetParameter( GAPROLE_ADV_EVENT_TYPE, sizeof( uint8 ), &advType );
å 为 iBeacon å¿ é¡»ä¸é´æ广æï¼å¹¶ä¸ä¸ååºä»»ä½æ°æ®è¯·æ±ï¼æ以æ们è¦ä¿®æ¹ GAPROLE_ADVERT_OFF_TIME å GAPROLE_SCAN_RSP_DATAã
// Set the GAP Role Parameters
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );
//GAPRole_SetParameter( GAPROLE_ADVERT_OFF_TIME, sizeof( uint ), &gapRole_AdvertOffTime );
//GAPRole_SetParameter( GAPROLE_SCAN_RSP_DATA, sizeof ( scanRspData ), scanRspData );
GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData );
GAPRole_SetParameter( GAPROLE_ADV_EVENT_TYPE, sizeof( uint8 ), &advType );
ä¿åå·¥ç¨åï¼è¿è¡ç¼è¯ï¼å¹¶éè¿ CCDebugger ä¸è½½ç¨åºå°å¼åæ¿ä¸ã
Select Project > Clean to clean the project.
Select Project > Make to make the project.
Select Project > Download and Debug to send the code to the CC Key Fob
Select Debug > Go to Run the code on the CC Key Fob.
BLE iBeacon
TI Displayport ESD Protection â TPD8S
Arduino SPI ç²¾å课ç¨
TAGS
Arduino Arduino Due Arduino Esplora Atmegau4 Atmel BacklightBMP Bootloader CC3x DatasheetDisplayport EasyDriver EDID eDPEsplora HDMI HMCL I2CJoystick LCD LED Luban LVDS MIPIMPU MySQL Nginx PCB PHP pinModePWM PX4 Raspberry Pi RGB Sensor SPIStepper Motor Ubuntu Wifi ææ æ èæ´¾æ¥è¿çµæº çµæº èå èç
CATEGORIES
3D Printer
Android
Application Notes
Arduino
AVR
Backlight Driver
C
CC3x
Datasheet
Development Environment
HDMI
Imaging & Graphics
iOS
Javascript
LCD/LCM
Material
Others
PCB Design
Power Management
Prototyping
Raspberry Pi
Rostock
Sensor
Server
Software
STM
Super Manual
Tutorials
Work
透视CobaltStrike(二)——从CS到免杀框架Veil
在深入探讨CobaltStrike的恶意样本类型之前,需明确的源码是,CobaltStrike可生成三种类型hta文件:Executable、源码Powershell、源码VBA,源码php mysql 网站源码它们在hta文件内的源码封装形式各异,分别为嵌入PE文件、源码Powershell代码或VBA代码。源码
对于Beacon_Executable,源码它以VBScript为载体,源码内嵌硬编码PE脚本,源码通过WScript.Shell加载执行,源码表情插件源码最终输出kb大小的源码PE文件,经分析可确认该样本为CobaltStrike的源码分段Payload加载器。
Powershell类型的样本体积较小,通过解密中间base编码的代码执行,最终实现数据流解压缩执行,该段Powershell指令可直接执行,其在启动时判断操作系统位数,若为位则以位模式启动。执行时将shellcode写入指定文件,格式化后发现其为分段Payload中用于下载后续Payload的shellcode。
VBA类的hta文件通过在hta中创建Excel对象填充恶意宏代码执行,首先创建Excel.Application对象并更改其可见性,openwrt源码版本接着创建WscriptShell对象操作注册表,完成宏代码的添加,最后通过Auto_Open方法调用宏。此过程可直接在Excel中创建宏对象,将hta文件中的宏代码进行调试,注意位置选择至当前文档而非应用到所有模板。原始代码中包含无用代码,需通过替换或编写脚本进行简化,最终宏代码读取hex数据流,通过rundll加载执行。
CobaltStrike支持生成多种语言Payload,包括C、free源码解析C#、Java、Python等,其中C、C#、JAVA、Perl、Python、Ruby、VBA等Payload为硬编码shellcode,加载器可编写将此buf加载至内存执行。COM组件的av淘宝源码sct文件与VBA相似,通过Excel对象执行预定义宏。Powershell类型的Payload与hta类型保持一致,而Powershell_cmd类型的Payload直接生成执行指令,用于解码后的指令执行。
CobaltStrike生成的Payload本质上加载的都是CS的downloader,而Veil框架则是配合CobaltStrike使用的免杀工具。Veil可以生成具有一定免杀性的样本,其包含Evasion和Ordnance两个免杀工具。安装Veil在Kali中执行apt -y install veil即可,配置完成,通过veil指令进入框架,其中Evasion用于文件免杀,Ordnance生成Veil Shellcode。
Veil框架提供多种Payload生成方式,例如autoit、Powershell、C等,其中autoit Payload可直接编译成可执行文件,通过键入use 1选择Evasion工具,键入generate生成样本,选择不同方式生成shellcode,包括xor编码。生成后的shellcode注入到calc.exe中,验证后发现与CobaltStrike shellcode风格类似但短小,是用于下载后续Payload的。
对于MSFvenom选项的shellcode,配置时选择此选项,根据提示输入信息,生成名为payload1.exe的利用文件,注入方式与autoit类似,但感觉更稳定。关于MSFvenom shellcode与CobaltStrike shellcode的相似性将在后续文章中详细解析。选择c/meterpreter后,Veil自动配置LPORT,用户需手动输入LHOST和Filename,生成的payload包括源代码和可执行文件,其中生成的C语言源代码可直接查看。
Veil生成的meterpreter样本较为有趣,后续文章将对此进行完整分析。至此,对CobaltStrike生成的Payload类型及Veil框架的介绍完毕,期待进一步深入探讨。
逆向pyinstaller打包的exe软件,获取python源码(2)
年,我开发了第二个安全运营工具——统一运营,专为驻场运营管理员设计。该工具需要与第一个工具安全事件分析(ailx:逆向pyinstaller打包的exe软件)配合使用。安全事件分析工具会产生一个db文件,存储客户态势感知平台上的安全事件信息。统一运营工具对多个客户的数据进行横向AI聚类分析和纵向历史基线分析,并构建分析报表,自动生成邮件。在此过程中,我使用了一个复杂的算法进行横向对比,即9:1开,强制%的安全驻场不及格。近期,遇到一个beacon加密程序被同事破解,激发了我对逆向的兴趣,于是我开始逆向pyinstaller打包的exe软件,获取python源代码。
提醒:故事还有后续,逆向成功获取pyinstaller打包的exe软件的所有源代码:ailx:逆向pyinstaller打包的exe软件,获取python源码(5)
自动化运营周报小工具说明:
第一步:对exe程序进行反编译[1]
第二步:进入新获得的extracted文件夹
第三步:查看struct.pyc和main.pyc前8字节之间的区别
第一个软件前个字节,第二个软件只有前8个字节相同,不知道为啥,不过我这里并未处理
第四步:反编译pyc文件得到python源代码
第五步:欣赏一下反编译的代码
非常遗憾,暂时只能看到主函数,看不到最核心的my_core函数,不知道咋弄