This methods arent good...If all spells in your map deal damage by triggers, you can temporarily set a boolean variable to true when dealing spell damage. Therefore, if the boolean is false when a unit takes damage, it must have come from an attack.
Otherwise, if you are comfortable triggering all buff-on-attack abilities, every unit can be given a hidden buff-on-attack ability which will let you determine whether the damage came from an attack by checking whether the damaged unit has that buff.
As far as I'm aware, these are the only reliable methods for discerning attack damage apart from spell damage in WC3.
And i tried once, i set the damage of cripple to 0
But the unit get knockback which is another trigger when it is casted