Assuming you're only using a single layer in your Animator, where
MyAnimator is a
MyAnimator.GetCurrentAnimatorClipInfo(0).clip.length * (MyAnimator.GetCurrentAnimatorStateInfo(0).normalizedTime % 1) * MyAnimator.GetCurrentAnimatorClipInfo(0).clip.frameRate;
Will return the current "frame", which you can then round appropriately to get an integer value, if that's what you would like.
We mod the current animation state info's
normalizedTime by 1, because looping animations will go above 1.
... And if you have multiple animations playing at once on a single layer (such as when transitioning from one animation state to another), you may need to check the weight(s) of each animation, but you'll probably be able to get away with the above.
To be honest, relying on this value may or may not be the best route, depending on what you want to accomplish. For any frame/time dependent behavior you want to tie into unity's animation system I'd recommend looking at animation events.